Phoenix批量加载数据 错误 Bulkload dir /tmp/ *** not found

执行批量加载数据命令:

hadoop jar phoenix-4.8.0-cdh5.8.0-client.jar org.apache.phoenix.mapreduce.CsvBulkLoadTool \

--table wndb.TEST --input /user/hdfs/test.csv -delimiter '$' --ignore-errors


MapReduce都跑完了, 最后出现了如下错误信息:

Exception in thread "main" java.io.FileNotFoundException: Bulkload dir /tmp/8c3d200d-a19f-4035-801e-4d766fec43db/WNDB.TEST not found


猜测原因:

    1. hdfs故障, 导致临时文件丢失

    2. 有后台进程正在清理临时文件


执行命令查看临时文件

    hdfs dfs -ls /tmp/8c3d200d-a19f-4035-801e-4d766fec43db/

    结果是确是没有 WNDB.TEST 文件


验证猜测结果:

    我执行了一个之前已经测试成功的导入命令, 清空了该Phoenix表中的数据, 重新导入了一遍, 结果成功了

    我又猜测可能是文件上传的节点正好有问题, 因为是测试集群, 只有六个节点, 很有可能确实有问题, 所以我又把测试数据改动了一下, 重新命名了一个文件名上传到hdfs, 重新执行了那个命令, 结果还是同样的错误.


验证表明, 猜测原因不成立.


我又把所有执行步骤重新看了一遍, 发现了一个让人哭笑不得的错误, 创建表的时候不小心多写了一列, 数据源是按五列走的, 结果表是六列的


错误原因:

    数据源和Phoenix表不匹配, 数据源只有五列数据, 而表是六列


总结:

    自己测试的时候,  切记不要用该参数 --ignore-errors , 它会忽略错误, 出现了错误都看不到, 该参数是在导入大量数据的时候用的, 防止因为个别脏数据导致整个导入过程失败.

猜你喜欢

转载自blog.csdn.net/yuanhaiwn/article/details/80262449
tmp
今日推荐