是否可以在 Pig 中管理 NO FILE 错误?

Posted

技术标签:

【中文标题】是否可以在 Pig 中管理 NO FILE 错误?【英文标题】:IS it possible to manage NO FILE error in Pig? 【发布时间】:2014-04-08 09:54:23 【问题描述】:

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

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)

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

【问题讨论】:

Pawel,您知道如何处理这个问题吗?即使我有同样的情况。谢谢 这里也一样。我也尝试了几个正则表达式。只要它返回“0个文件”,就没有任何工作 您可以创建一个空的blank 文件并使用类似/pko/blank,file*gz 的模式加载。当不存在file*gzs 时,它将加载 0 行。 【参考方案1】:

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

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

log = load 'file_1.gz' using TextLoader AS (line:chararray); 由于您没有提到 file_1.gz 的绝对路径,因此它将获取您正在运行猪脚本的用户的 home hdfs 目录

【讨论】:

我知道错误的原因。但我的问题是:是否有可能在 Pig 中管理这些错误。类似 try-catch。【参考方案2】:

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

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

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

祝你学猪好运!

【讨论】:

你能提供你提到的网站吗?【参考方案3】:

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

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

我想从数据子文件夹加载所有文件,但是数据文件夹是空的,我遇到了和你一样的错误。在我的特殊情况下,我所做的是在数据目录中创建一个空文件夹。所以 LOAD 返回一个空数据集,脚本没有失败。

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

【讨论】:

以上是关于是否可以在 Pig 中管理 NO FILE 错误?的主要内容,如果未能解决你的问题,请参考以下文章

Pig、Oozie 和 HBase - java.io.IOException: No FileSystem for scheme: hbase

yii导出excel表格出现No such file or directory 错误怎么解决

QApplication:No such file or directory 错误解决

是否可以在 pig java udf 中使用 pig 内置函数

PIG:无效的场投影。架构中不存在投影字段 [dept_no]

PIG:研究许多文件