flume在从kafka采集数据后,会将数据写入到hdfs文件中。在写入过程中,由于集群负载、资源或者网络原因会导致文件没有正常关闭,即文件表现为tmp格式,这种格式的文件从hdfs往hive分区load数据时,会导致数据无法查询问题。
flume写入文件正常关闭的过程会有一个create和close的过程,通过如下命令对没有正常关闭的文件进行修复。
bash
hdfs debug recoverLease -path 异常文件路径 -retries 10
例如:
bash
hdfs debug recoverLease -path /warehouse/tablespace/managed/hive/ods.db/test/2023-11-06/.tempFlumeData.1699239988831.tmp -retries 10
文件处理后,再进行load操作
bash
load data inpath '路径' into table ods.表名 partition(dt='2023-11-06');
问题解决。