如何在一定数量的警告后让猪流产?

时间:2013-11-15 14:15:14

标签: hadoop apache-pig

我刚刚以stdout

结束了工作
Success!
...
Input(s):
Successfully read 14982562 records from: "..."
Successfully read 21532901 records from: "..."
Successfully read 9322681 records from: "..."

Output(s):
Successfully stored 0 records in: "..."
Successfully stored 0 records in: "..."
...
2013-11-14 22:50:46,179 [main] WARN  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - Encountered Warning TOO_LARGE_FOR_INT 7 time(s).
2013-11-14 22:50:46,180 [main] WARN  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - Encountered Warning ACCESSING_NON_EXISTENT_FIELD 9322681 time(s).
2013-11-14 22:50:46,180 [main] WARN  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - Encountered Warning FIELD_DISCARDED_TYPE_CONVERSION_FAILED 61711157 time(s).
2013-11-14 22:50:46,180 [main] INFO  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - Success!

显然,我做错了什么,但不是告诉我什么,猪 计算了70M +警告并宣称成功。

显然,人们无法存储70M警告的详细日志,但声称取得了成功 这种情况很荒谬。

有没有办法将其配置为报告难以忍受的每个警告 detail(脚本行所在的字段) ACCESSING_NON_EXISTENT_FIELD,哪个字段,哪个值,哪个类型, 用于FIELD_DISCARDED_TYPE_CONVERSION_FAILED的哪个脚本行 首先,比如每个主机上每种类型的10或100或1000个警告,然后中止?

1 个答案:

答案 0 :(得分:0)

  

有没有办法在X警告后中止?

我不这么认为。原因是您使用的UDF认为跳过这些错误是可以接受的。您可以根据正在使用的UDF创建自己的UDF,并在发生错误时抛出异常而不是警告。有关详细信息,请参阅this presentation(幻灯片15)。

您使用的是HBaseStorage吗?如果是这样,其他SO overflow question可以帮助您解决此问题。快速摘要:使用HBaseBinaryConverter

  

有没有办法将其配置为报告极其详细的每个警告[...]?

是的,您可以单独查看每个警告。有关如何执行此操作的详细信息,请参阅此其他SO question。快速摘要:自己解析日志并查找WARN消息。