猪错误:处于状态DEFINE而不是RUNNING - 通用解决方案

时间:2016-11-25 10:28:44

标签: apache-pig

在没有太多有用信息的情况下发生的典型Pig错误如下:

Job in state DEFINE instead of RUNNING

经常在这样的一行中找到:

Caused by: java.lang.IllegalStateException: Job in state DEFINE instead of RUNNING

我已经看到了这个错误的一些例子,但是希望有这个问题的通用解决方案。

1 个答案:

答案 0 :(得分:1)

到目前为止,在我遇到此错误的每个场合,都是因为Pig无法加载文件。问题中的错误会打印到 stderr 日志中,您在那里找不到任何有用的内容。

但是,如果你要查看 stdout 日志,你会发现以下内容:

Message: org.apache.pig.backend.executionengine.ExecException: ERROR 2118: Input Pattern hdfs://x.x.x.x:x/locationOnHDFS/* matches 0 files

通常接着是:

Caused by: org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input Pattern hdfs://x.x.x.x:x/locationOnHDFS/* matches 0 files

此时最可能的嫌疑人是:

  • 指定文件夹中没有文件(尽管该文件夹存在)
  • 运行脚本的用户无权访问相关文件
  • 所有文件都是空的(不确定此文件)

请注意,如果您尝试读取空目录(而不是仅使用0行处理别名),则会出现一个众所周知的难题,即猪会出错。