问题描述
Hive Reader 配置readMode为hdfs方式的情况下同步Hive表数据报block文件不存在问题: java.io.FileNotFoundException: File does not exist: /user/hive/warehouse/...
问题原因
1、Hive Reader配置readMode为hdfs方式的时候,底层读取数据的方式是基于HDFS文件方式读取数据,会先在HDFS上根据表找到数据对应的Block块,然后同步。出现上面报错的原因是找到表数据对应的块的数据还没有进行同步的时候,客户侧有做表数据删除等变更操作,或者表数据块文件删除的操作都有可能导致HiveReader在读取块数据的时候发现块不存在了,然后报: File does not exist
2、出现这个报错的概率比较低,数据量少的时候,同步速度快基本不会有这个问题,数据量特别大,同步速度慢,同步过程中客户有对数据进行操作就有可能会造成这个问题。
解决方案
以HDFS模式同步的时候保证不对表数据做变更可以避免,其次就是修改readMode为JDBC模式,该模式Hive引擎底层可能会生成MapReduce任务效率比HDFS模式慢,但是不会出现上述数据文件找不到的问题。
适用范围
大数据开发治理平台 DataWorks