spark、flink 创建Iceberg表中,元数据存储在hive 的meta_store,发现hive 或者impala无法正常读取报错。事实上解决方案是
在spark 、flink 的SQL中执行语句:
add iceberg相关引擎的runntime的jar;
ALTER TABLE t SET TBLPROPERTIES ('storage_handler'='org.apache.iceberg.mr.hive.HiveIcebergStorageHandler');
就可以解决。
原因是因为impala和hive 是依据元数据库中的StorageHandler 来序列号和反序列化数据的.
在
使用iceberg的java的api 建表语句中 建表属性补充上
Catalog catalog=...;
Map<String, String> tableProperties=Maps.newHashMap();
tableProperties.put(TableProperties.ENGINE_HIVE_ENABLED,"true"); // engine.hive.enabled=true
catalog.createTable(tableId,schema,spec,tableProperties);
标签:Iceberg,tableProperties,flink,hive,spark,impala
From: https://www.cnblogs.com/kxming/p/17805527.html