我刚刚以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个警告,然后中止?
答案 0 :(得分:0)
有没有办法在X警告后中止?
我不这么认为。原因是您使用的UDF认为跳过这些错误是可以接受的。您可以根据正在使用的UDF创建自己的UDF,并在发生错误时抛出异常而不是警告。有关详细信息,请参阅this presentation(幻灯片15)。
您使用的是HBaseStorage吗?如果是这样,其他SO overflow question可以帮助您解决此问题。快速摘要:使用HBaseBinaryConverter
。
有没有办法将其配置为报告极其详细的每个警告[...]?
是的,您可以单独查看每个警告。有关如何执行此操作的详细信息,请参阅此其他SO question。快速摘要:自己解析日志并查找WARN消息。