flink集成iceberg访问hive catalog任务报错
问题现象
flink在集成iceberg后访问hive catalog任务无法执行,但flink自身任务正常,iceberg表任务无法执行,报错如下:
Caused by: java.lang.RuntimeException: org.apache.flink.runtime.JobException: Creating the input splits caused an error: Failed to get table info from metastore ice.flink_ice
问题原因
导致flink在执行iceberg表操作的时候需要链接metastore,但是由于hive配置无法获取到,因此无法连接metastore,导致ttransportexception。进而出现无法获取表的报错
解决办法
在flink加载hive catalog时,设置相关hive的conf目录,使相关catalog能加载到对应hive conf即可,实例如下:
CREATE CATALOG ice_catalog WITH ( 'type'='iceberg', 'catalog-type'='hive', 'hive-conf-dir'='/opt/apache-hadoop/hive/conf', 'uri'='thrift://hadoop02p.test.com:9083', 'clients'='5', 'property-version'='1', 'warehouse'='/user/hive/warehouse' );
以上示例中:hive-conf-dir配置项为此问题关键配置,添加此配置后即可解决问题
hive catalog加载配置理论上应该从hive目录找寻,目前怀疑此处有配置冲突或者环境变量没有配置导致此问题