是否可以管理猪的NO FILE错误?

时间:2014-04-08 09:54:24

标签: apache-pig

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

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)

是否可以在出现错误之前管理这种情况?

3 个答案:

答案 0 :(得分:0)

输入模式hdfs:// hadoop1:8020 / pko / file * gz匹配0个文件

错误是输入文件不存在于给定的hdfs路径中。

log = load' file_1.gz'使用TextLoader AS(line:chararray); 因为你没有提到file_1.gz的绝对路径,所以它将采用你运行你的pig脚本的用户的home hdfs目录

答案 1 :(得分:0)

不幸的是,在当前版本的Pig(0.15.0)中,如果不使用UDF,就无法管理这些错误。

我建议使用try和catch创建一个Java或Python脚本来处理这个问题。

这是一个可能对您有用的好网站:https://wiki.apache.org/pig/PigErrorHandlingInScripts

祝学习猪好运!

答案 2 :(得分:0)

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

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

我想从数据子文件夹加载所有文件,但数据文件夹为空,我收到的错误与您相同。在我的特定情况下,我所做的是在数据目录中创建一个空文件夹。所以LOAD返回一个空数据集,脚本没有失败。

顺便说一下,我正在使用Oozie工作流来运行脚本,在准备中,我创建了空文件夹。