2012-10-19 119 views
0

我有一个蜂巢安装(蜂房0.8,Hadoop的1.0.3)在5台机器,每当我尝试加入两个表,我得到以下异常:HIVE加入问题

了java.lang.RuntimeException :从org.apache.hadoop.hive.ql.exec.errors.TaskLogProcessor.getErrors(TaskLogProcessor.java:130) (位于org.apache.hadoop.hive.ql.exec.JobDebugger)处从任务日志url 读取时出错。 showJobFailDebugInfo(JobDebugger.java:211) at org.apache.hadoop.hive.ql.exec.JobDebugger.run(JobDebugger.java:81) at java.lang.Thread.run(Unknown Source) 由java导致:java .io.IOException:服务器返回的HTTP响应c ODE:400的URL:http:// hadoop4:50060 /任务日志的taskid = attempt_201210161122_0013_r_000001_4 &开始= -8193

URL可以指向不同的机器。

所以,我发现谷歌搜索,如果我改变taskidattemptid话,我可以看到实际的问题,这是此异常:

FATAL ExecReducer:java.lang.IllegalArgumentException异常:毫微> 999999999或 at java.sql.Timestamp.setNanos(Unknown Source) at org.apache.hadoop.hive.serde2.io.TimestampWritable.populateTimestamp(TimestampWritable.java:348) at org.apache.hadoop.hive.serde2.io .TimestampWritable.toString(TimestampWritable.java:320) at org.apache.hadoop.hive.serde2.lazy.LazyTimestamp.writeUTF8(LazyT imestamp.java:95) at org.apache.hadoop.hive.serde2.lazy.LazyUtils.writePrimitiveUTF8(LazyUtils.java:232) at 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) at org.apache.hadoop.hive.ql.exec.Operator.process(Operator.java:471)org.apache.hadoop.hive.ql.exec.FileSinkOperator.processOp(FileSinkOperator.java:569) at 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.apach e.hadoop.hive.ql.exec.Operator.process(Operator.java:471) (位于org.apache的org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:762) )。 hadoop.hive.ql.exec.FilterOperator.processOp(FilterOperator.java:132) at org.apache.hadoop.hive.ql.exec.Operator.process(Operator.java:471) at org.apache.hadoop。 hive.ql.exec.Operator.forward(Operator.java:762) at org.apache.hadoop.hive.ql.exec.CommonJoinOperator.genAllOneUniqueJoinObject(CommonJoinOperator.java:749) at 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) at org.apache.hadoop.mapred.ReduceTask.runOldReducer(ReduceTask.java:519) at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:420) at 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) at org.apache.hadoop.mapred.Child。main(Child.java:249)

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

任何人都可以指出我正确的方向吗? PS:我已经尝试过为Hive/Hadoop的旧版本在线提出的解决方案,但是它们都没有产生任何结果。另外,我也检查了NULL的值。

回答

0

你最好提供关于你的配置单元环境的更多信息。比如你的表架构和原始数据。

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

+0

我该如何使用配置单元日期列来检查hdfs? btw。我通过使用视图找出了解决我的问题的临时解决方案。出于某种原因,如果我把查询放入视图中,那么我可以在视图上做任何我想做的事情,并且异常不会被抛出。 – user1676389

0

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

nanos > 999999999 or < 0 

应该是:

(nanos > 999999999 or nanos < 0) 

因此,它不会是真实的,“在一个视图”工作正常。您将不得不纠正该语法错误作为创建视图的一部分。 IOW您的观点确实不是与独立查询匹配。