0

我在 5 台机器上安装了 Hive(Hive-0.8、Hadoop-1.0.3),每当我尝试加入两个表时,我都会收到以下异常:

java.lang.RuntimeException:从 org.apache.hadoop.hive.ql.exec 的 org.apache.hadoop.hive.ql.exec.errors.TaskLogProcessor.getErrors(TaskLogProcessor.java:130) 的任务日志 URL 读取时出错.JobDebugger.showJobFailDebugInfo(JobDebugger.java:211) at org.apache.hadoop.hive.ql.exec.JobDebugger.run(JobDebugger.java:81) at java.lang.Thread.run(Unknown Source) 原因:java .io.IOException:服务器返回 HTTP 响应代码:400 对于 URL:http://hadoop4:50060/tasklog?taskid=attempt_201210161122_0013_r_000001_4&start=-8193

url 可以指向不同的机器。

所以我通过谷歌搜索发现,如果我更改taskidattemptidthen 我可以看到实际问题,这就是这个异常:

FATAL ExecReducer: java.lang.IllegalArgumentException: nanos > 999999999 或 < 0 at java.sql.Timestamp.setNanos(Unknown Source) at org.apache.hadoop.hive.serde2.io.TimestampWritable.populateTimestamp(TimestampWritable.java:348)在 org.apache.hadoop.hive.serde2.io.TimestampWritable.toString(TimestampWritable.java:320) 在 org.apache.hadoop.hive.serde2.lazy.LazyTimestamp.writeUTF8(LazyTimestamp.java:95) 在 org.apache .hadoop.hive.serde2.lazy.LazyUtils.writePrimitiveUTF8(LazyUtils.java:232) 在 org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe.serialize(LazySimpleSerDe.java:427) 在 org.apache.hadoop.hive .serde2.lazy.LazySimpleSerDe.serializeField(LazySimpleSerDe.java:381) 在 org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe.serialize(LazySimpleSerDe.java:365) 在 org.apache.hadoop.hive.ql.exec .FileSinkOperator.processOp(FileSinkOperator.java:569) 在 org.apache.hadoop.hive.ql.exec.Operator.process(Operator.java:471) 在 org.apache.hadoop.hive.ql.exec.Operator.forward( Operator.java:762) at org.apache.hadoop.hive.ql.exec.SelectOperator.processOp(SelectOperator.java:84) at org.apache.hadoop.hive.ql.exec.Operator.process(Operator.java:第471章.apache.hadoop.hive.ql.exec.Operator.process(Operator.java:471) 在 org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:762) 在 org.apache.hadoop .hive.ql.exec.CommonJoinOperator.genAllOneUniqueJoinObject(CommonJoinOperator.java:749) 在 org.apache.hadoop.hive.ql.exec。CommonJoinOperator.checkAndGenObject(CommonJoinOperator.java:836) at org.apache.hadoop.hive.ql.exec.JoinOperator.endGroup(JoinOperator.java:263) at org.apache.hadoop.hive.ql.exec.ExecReducer.reduce( ExecReducer.java:198) 在 org.apache.hadoop.mapred.ReduceTask.runOldReducer(ReduceTask.java:519) 在 org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:420) 在 org.apache.hadoop .mapred.Child$4.run(Child.java:255) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Unknown Source) at org.apache.hadoop.security.UserGroupInformation .doAs(UserGroupInformation.java:1121) 在 org.apache.hadoop.mapred.Child.main(Child.java:249)263)在 org.apache.hadoop.hive.ql.exec.ExecReducer.reduce(ExecReducer.java:198) 在 org.apache.hadoop.mapred.ReduceTask.runOldReducer(ReduceTask.java:519) 在 org.apache.hadoop .mapred.ReduceTask.run(ReduceTask.java:420) 在 org.apache.hadoop.mapred.Child$4.run(Child.java:255) 在 java.security.AccessController.doPrivileged(Native Method) 在 javax.security。 auth.Subject.doAs(Unknown Source) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) at org.apache.hadoop.mapred.Child.main(Child.java:249)263)在 org.apache.hadoop.hive.ql.exec.ExecReducer.reduce(ExecReducer.java:198) 在 org.apache.hadoop.mapred.ReduceTask.runOldReducer(ReduceTask.java:519) 在 org.apache.hadoop .mapred.ReduceTask.run(ReduceTask.java:420) 在 org.apache.hadoop.mapred.Child$4.run(Child.java:255) 在 java.security.AccessController.doPrivileged(Native Method) 在 javax.security。 auth.Subject.doAs(Unknown Source) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) at org.apache.hadoop.mapred.Child.main(Child.java:249)java:255) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Unknown Source) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) at org.apache.hadoop.mapred.Child.main(Child.java:249)java:255) 在 java.security.AccessController.doPrivileged(Native Method) 在 javax.security.auth.Subject.doAs(Unknown Source) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) 在org.apache.hadoop.mapred.Child.main(Child.java:249)

我不确定整个堆栈跟踪是否有帮助,但我从谷歌搜索中发现,异常是指向 IBM DB2 的 IBM 更新/修复的链接。我不知道这是否与任何 Hive 问题有关,即使有,我也不知道该怎么做。

谁能指出我正确的方向?

PS:我已经尝试过针对旧版本的 Hive/Hadoop 在线建议的解决方案,但它们都没有产生任何结果。另外,我也检查了NULL值。

4

2 回答 2

0

你真的应该提供完整的sql。在任何情况下,以下内容都是无效的:

nanos > 999999999 or < 0 

应该:

(nanos > 999999999 or nanos < 0) 

因此,“在视图中”工作正常是不正确的。作为创建视图的一部分,您必须纠正该语法错误。IOW 您的视图与独立查询不匹配。

于 2013-10-01T21:41:08.690 回答
0

您最好提供有关您的配置单元环境的更多信息。比如你的表模式和原始数据。

在您提供的上述异常中,问题可能是您存储在 hdfs 中的数据与配置单元日期列不匹配。

于 2012-11-01T16:23:03.443 回答