Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 清管器非聚集警告输出位置?_Hadoop_Apache Pig - Fatal编程技术网

Hadoop 清管器非聚集警告输出位置?

Hadoop 清管器非聚集警告输出位置?,hadoop,apache-pig,Hadoop,Apache Pig,调试字段\u丢弃\u类型\u转换\u失败警告,但我似乎无法在任何地方打印单个警告。通过-w或aggregate.warnings=false开关禁用聚合将删除摘要消息,但它也会删除实际的警告,因此我看不出哪种类型的转换失败 这次运行的清管器日志中没有写任何内容,我也找不到带有单独警告的日志。我是否遗漏了任何明显的内容或根本不起作用?Hadoop作业日志记录在每个计算节点的本地。因此,首先需要设置hadoop集群管理器,将日志文件收集到分布式文件系统中,以便对其进行分析。如果您使用Hadoop o

调试
字段\u丢弃\u类型\u转换\u失败
警告,但我似乎无法在任何地方打印单个警告。通过
-w
aggregate.warnings=false
开关禁用聚合将删除摘要消息,但它也会删除实际的警告,因此我看不出哪种类型的转换失败


这次运行的清管器日志中没有写任何内容,我也找不到带有单独警告的日志。我是否遗漏了任何明显的内容或根本不起作用?

Hadoop作业日志记录在每个计算节点的本地。因此,首先需要设置hadoop集群管理器,将日志文件收集到分布式文件系统中,以便对其进行分析。如果您使用Hadoop on demand(),您应该可以通过指定以下内容来实现:

Pig: 0.8.1-cdh3u2
Hadoop: 0.20.2-cdh3u0
请参阅HOD文档,网址为

在HDFS上有日志之后,您可以运行一个简单的PIG查询来查找有问题的转换。类似于以下内容的内容应该可以做到这一点:

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

很难找到导致问题的数据或值,但至少可以找到导致此问题的列。找到该列后,您可以使用动态调用程序,它可以帮助您进行类型转换。

如何使用动态调用程序:
定义ConvertToDouble InvokeForDouble('java.lang.Double.parseDouble','String')

ConvertToDouble(列名称)


我期待着这个问题的答案。我通常手动查找记录。我已经有近1亿条记录,每天增加1/20万条,每行超过300列。这些是十进制数。没有工具支持,这比在干草堆中寻找一根针更糟糕。我唯一能想到的是将数据作为
chararray
加载到pig中,然后编写一个UDF来尝试转换它。如果抛出异常,请返回该项(否则不要返回任何内容)。感谢您的建议。情况有点不同——我确实过滤了数据噪音和所有的废话,所以数据类型保证是双清管器类型。尽管pig仍在抱怨,我希望它告诉我确切的值(通过使用-w开关)。但它似乎没有打印出我期望的输出。
a1= LOAD '*.log' USING PigStorage(']') ;
a2= FILTER a1  by ($1 MATCHES ' WARN.*Unable to interpret value.*');
dump a2;