【问题标题】:Hive query error with Json使用 Json 的 Hive 查询错误
【发布时间】:2014-06-10 17:36:24
【问题描述】:

我正在使用 twitter cloudera 示例创建表,虽然我已成功创建表并获取数据,但遇到了问题。

我可以执行 select * from tweets; 并返回数据,但是当我像 count(*) 一样深入时,我收到了一个错误。

这是创建的表:

添加 JAR /cdh-twitter-example/hive-serdes/target/hive-serdes-1.0-SNAPSHOT.jar; 创建外部表推文(id BIGINT,created_at STRING,
source STRING, 收藏的 BOOLEAN, retweet_count INT,
转推状态 STRUCT,实体 STRUCT, 用户提及:阵列>, 主题标签:ARRAY>>、文本字符串、用户 STRUCT, in_reply_to_screen_name STRING ) ROW FORMAT SERDE 'com.cloudera.hive.serde.JSONSerDe' LOCATION '/user/flume/tweets';

这是错误和堆栈跟踪:

hive> 从推文中选择 count(*); MapReduce 作业总数 = 1 正在启动 Job 1 out of 1 在编译时确定的reduce任务数:1 In 为了改变reducer的平均负载(以字节为单位):set hive.exec.reducers.bytes.per.reducer= 为了限制 reducer 的最大数量:设置 hive.exec.reducers.max= In 为了设置一个恒定数量的减速器:set mapred.reduce.tasks=开始工作=job_1402410026954_0004, 跟踪网址 = http://bigdatalite.localdomain:8088/proxy/application_1402410026954_0004/ 杀死命令 = /usr/lib/hadoop/bin/hadoop 作业 -kill job_1402410026954_0004 Stage-1 的 Hadoop 作业信息:数量 映射器:1;减速器数量:1 2014-06-10 13:07:28,078 Stage-1 map = 0%,减少 = 0% 2014-06-10 13:07:39,983 阶段 1 映射 = 100%,减少 = 0% 2014-06-10 13:07:41,071 阶段 1 映射 = 0%,减少 = 0% 2014-06-10 13:08:18,527 第 1 阶段地图 = 100%,减少 = 100% 结束作业 = job_1402410026954_0004 with errors 作业期间出错,获取 调试信息... 检查任务 ID: task_1402410026954_0004_m_000000(以及更多)来自工作 job_1402410026954_0004

失败次数最多的任务(4): ----- 任务ID:task_1402410026954_0004_m_000000

tipid=task_1402410026954_0004_m_000000 ----- 此任务的诊断消息:错误:java.lang.RuntimeException:在配置对象时出错 org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:109) 在 org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:75) 在 org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:133) 在 org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:426) 在 org.apache.hadoop.mapred.MapTask.run(MapTask.java:342) 在 org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:168) 在 java.security.AccessController.doPrivileged(Native Method) 在 javax.security.auth.Subject.doAs(Subject.java:415) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1548) 在 org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:163) 引起 通过:java.lang.reflect.InvocationTargetException 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:106) ... 9 更多原因:java.lang.RuntimeException: Error in 配置对象在 org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:109) 在 org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:75) 在 org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:133) 在 org.apache.hadoop.mapred.MapRunner.configure(MapRunner.java:38) ... 14 更多原因:java.lang.reflect.InvocationTargetException 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:106) ... 17 更多原因:java.lang.RuntimeException: Map operator 初始化失败 org.apache.hadoop.hive.ql.exec.mr.ExecMapper.configure(ExecMapper.java:134) ... 22 更多原因: org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.ClassNotFoundException:类 com.cloudera.hive.serde.JSONSerDe 未找到 org.apache.hadoop.hive.ql.exec.MapOperator.getConvertedOI(MapOperator.java:314) 在 org.apache.hadoop.hive.ql.exec.MapOperator.setChildren(MapOperator.java:333) 在 org.apache.hadoop.hive.ql.exec.mr.ExecMapper.configure(ExecMapper.java:103) ... 22 更多原因:java.lang.ClassNotFoundException: Class com.cloudera.hive.serde.JSONSerDe 未找到 org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1801) 在 org.apache.hadoop.hive.ql.exec.MapOperator.getConvertedOI(MapOperator.java:284) ... 24 更多

FAILED:执行错误,返回代码 2 从 org.apache.hadoop.hive.ql.exec.mr.MapRedTask MapReduce Jobs Launched: 作业 0:映射:1 减少:1 HDFS 读取:0 HDFS 写入:0 FAIL 总计 MapReduce CPU 时间花费:0 毫秒

有什么想法吗?

【问题讨论】:

  • 您运行的是哪个 CDH 版本?
  • 您好,我使用的是 CDH 5
  • 尝试将 hive-serdes jar 复制到 /usr/lib/hive/lib
  • 我已经制作了一份副本,重新启动了配置单元服务,但错误仍然存​​在,这是 $HIVE_HOME/lib 上的样子:lrwxrwxrwx。 1 根 32 Apr 25 16:53 zookeeper.jar -> /usr/lib/zookeeper/zookeeper.jar lrwxrwxrwx。 1 根 40 Apr 25 16:56 mysql-connector-java.jar -> /usr/share/java/mysql-connector-java.jar -rwxrwxrwx。 1 根根 231K Jun 10 13:06 hive-serdes-1.0-SNAPSHOT.jar
  • 如果将jar复制到所有节点上的同一个文件夹中会怎样?

标签: java json apache hadoop hive


【解决方案1】:

将所需的库也复制到hadoop lib文件夹中,即可解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-05
    • 2016-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-25
    • 1970-01-01
    相关资源
    最近更新 更多