其他分享
首页 > 其他分享> > org.apache.iceberg.exceptions.NotFoundException: Failed to open input stream for file:hdfs://ns1/use

org.apache.iceberg.exceptions.NotFoundException: Failed to open input stream for file:hdfs://ns1/use

作者:互联网

做机器迁移,导致flink程序写iceberg失败,原因是hive的元数据存储库mysql停了一段时间。
然后flink出现以下异常,

org.apache.iceberg.exceptions.NotFoundException: Failed to open input stream for file: hdfs://ns1/user/hive/warehouse/iceberg_ods.db/ods_xxx/metadata/17120-4d647bb0-6caa-4ea1-a8e4-8ed8fc0f3922.metadata.json

网上找了半天,终于发现了一个解决方法,可以读出表中的数据来,但是那个metadata关联的文件数据会有部分丢失。

解决方法:
(1) 先查询到该表对应的元数据的目录中其他的元数据信息。

hdfs dfs -ls /user/hive/warehouse/iceberg_ods.db/ods_xxx/metadata/17120-*.metadata.json

(2)下载相近的一条元数据文件

hdfs dfs -get /user/hive/warehouse/iceberg_ods.db/ods_xxx/metadata/17543-e503a667-eaef-4bfd-91ec-7c8079206ec7.metadata.json

(3)将该文件重命名为刚才报错的文件名

mv 17543-e503a667-eaef-4bfd-91ec-7c8079206ec7.metadata.json 17120-4d647bb0-6caa-4ea1-a8e4-8ed8fc0f3922.metadata.json

(4)然后将该文件上传到刚才的meta目录。

hdfs dfs -put 17120-4d647bb0-6caa-4ea1-a8e4-8ed8fc0f3922.metadata.json /user/hive/warehouse/iceberg_ods.db/ods_xxx/metadata/

然后再查询表信息就不会出错了,其实简单来说就是找个文件替换。
至于缺失的按个meta文件对应的数据文件,只能自己去想其他办法后补了。

标签:hdfs,iceberg,ods,db,hive,json,metadata
来源: https://www.cnblogs.com/30go/p/16696193.html