是否可以管理pig中的无文件错误?

iugsix8n  于 2021-06-21  发布在  Pig
关注(0)|答案(3)|浏览(272)

我正在尝试加载简单文件:

log = load 'file_1.gz' using TextLoader AS (line:chararray);
dump log

我得到一个错误:

2014-04-08 11:46:19,471 [main] ERROR org.apache.pig.tools.pigstats.SimplePigStats - ERROR 2997: Unable to recreate exception from backend error: org.apache.pig.backend.executionengine.ExecException: ERROR 2118: Input Pattern hdfs://hadoop1:8020/pko/file*gz matches 0 files
        at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigInputFormat.getSplits(PigInputFormat.java:288)
        at org.apache.hadoop.mapred.JobClient.writeNewSplits(JobClient.java:1054)

有没有可能在错误出现之前处理好这种情况?

esbemjvw

esbemjvw1#

输入模式hdfs://hadoop1:8020/pko/file*gz匹配0个文件
错误是输入文件在给定的hdfs路径中不存在。
log=使用textloader作为(line:chararray); 由于您没有提到文件\u 1.gz的绝对路径,它将获取运行pig脚本的用户的home hdfs dir

w8ntj3qf

w8ntj3qf2#

我也面临这个问题。我的加载命令是:

DATA = LOAD '${qurwf_folder_input}/data/*/' AS (...);

我想从数据子文件夹加载所有文件,但数据文件夹是空的,我得到了与您相同的错误。在我的特殊情况下,我所做的是在数据目录中创建一个空文件夹。因此,加载返回一个空数据集,脚本没有失败。
顺便说一下,我使用oozie工作流来运行脚本,在prepare中,我创建了空文件夹。

ubof19bj

ubof19bj3#

不幸的是,在pig的当前版本(0.15.0)中,不使用udf就不可能管理这些错误。
我建议使用try-and-catch创建一个java或python脚本来解决这个问题。
以下是一个可能对您有所帮助的好网站:https://wiki.apache.org/pig/pigerrorhandlinginscripts
祝你学Pig好运!

相关问题