猪非聚合警告输出位置?

时间:2011-12-14 19:58:06

标签: hadoop apache-pig

Pig: 0.8.1-cdh3u2
Hadoop: 0.20.2-cdh3u0

调试FIELD_DISCARDED_TYPE_CONVERSION_FAILED警告,但我似乎无法在任何地方打印个别警告。通过-waggregate.warnings=false开关禁用聚合会删除摘要消息,但它也会删除实际警告,因此我无法看到哪种类型转换失败。

这次运行的猪日志中没有任何内容,而且我无法找到带有个别警告的日志。我是否想念任何明显的东西,或者根本不起作用?

2 个答案:

答案 0 :(得分:0)

Hadoop作业日志在本地记录在每个计算节点上。因此,首先需要设置hadoop集群管理器以将日志文件收集到分布式文件系统中,以便分析它们。如果您使用Hadoop-on-demand(http://hadoop.apache.org/docs/r0.17.0/hod.html),您应该可以通过指定以下内容来实现:

log-destination-uri = hdfs://host123:45678/user/hod/logs

请参阅http://hadoop.apache.org/docs/r0.17.0/hod_user_guide.html#Collecting+and+Viewing+Hadoop+Logs

上的HOD文档

在HDFS上登录后,您可以运行简单的PIG查询来查找违规转换。像下面这样的东西可以做到这一点:

a1= LOAD '*.log' USING PigStorage(']') ;
a2= FILTER a1  by ($1 MATCHES ' WARN.*Unable to interpret value.*');
dump a2;

答案 1 :(得分:0)

很难找到导致问题的数据或值,但至少可以找到哪个列正在创建此问题。找到列后,您可以使用动态调用者来帮助您进行类型转换。

  

如何使用动态调用者:
  DEFINE Con​​vertToDouble InvokeForDouble('java.lang.Double.parseDouble','String');

     

ConvertToDouble(列);