首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ClassNotFoundException时使用hive + hbase集成的java客户端

问ClassNotFoundException时使用hive + hbase集成的java客户端
EN

Stack Overflow用户
提问于 2012-11-05 11:17:54
回答 3查看 4.7K关注 0票数 1

我有一个hive+hbase集成集群。

当我试图通过hive的java客户机执行查询时,有时会发生a ClassNotFoundException。

我的java代码:

代码语言:javascript
复制
final Connection conn = DriverManager.getConnection(URL);
final ResultSet rs = conn.executeQuery("SELECT count(*) FROM test_table WHERE (source = '0' AND ur_createtime BETWEEN '20121031000000' AND '20121031235959')");

我可以在hive中执行sql:SELECT count(*) FROM test_table WHERE (source = '0' AND ur_createtime BETWEEN '20121031000000' AND '20121031235959'),并获得查询结果,所以我的sql中没有错误。

客户端异常:

代码语言:javascript
复制
Caused by: java.sql.SQLException: Query returned non-zero code: 9, cause: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.MapRedTask
    at org.apache.hadoop.hive.jdbc.HiveStatement.executeQuery(HiveStatement.java:189)
... 23 more

服务器端异常(hadoop跟踪器):

代码语言:javascript
复制
2012-11-05 18:55:39,443 INFO org.apache.hadoop.mapred.TaskInProgress: Error from attempt_201210301133_0112_m_000000_3: java.io.IOException: Cannot create an instance of InputSplit class = org.apache.hadoop.hive.hbase.HBaseSplit:org.apache.hadoop.hive.hbase.HBaseSplit
    at org.apache.hadoop.hive.ql.io.HiveInputFormat$HiveInputSplit.readFields(HiveInputFormat.java:146)
    at org.apache.hadoop.io.serializer.WritableSerialization$WritableDeserializer.deserialize(WritableSerialization.java:67)
    at org.apache.hadoop.io.serializer.WritableSerialization$WritableDeserializer.deserialize(WritableSerialization.java:40)
    at org.apache.hadoop.mapred.MapTask.getSplitDetails(MapTask.java:396)
    at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:412)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:372)
    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:1059)
    at org.apache.hadoop.mapred.Child.main(Child.java:249)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hive.hbase.HBaseSplit
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:819)
    at org.apache.hadoop.hive.ql.io.HiveInputFormat$HiveInputSplit.readFields(HiveInputFormat.java:143)
    ... 10 more

我的蜂窝-env.sh

代码语言:javascript
复制
export HIVE_AUX_JARS_PATH=/data/install/hive-0.9.0/lib/hive-hbase-handler-0.9.0.jar,/data/install/hive-0.9.0/lib/hbase-0.92.0.jar,/data/install/hive-0.9.0/lib/zookeeper-3.4.2.jar

我的hive-site.xml

代码语言:javascript
复制
<property>
    <name>hive.zookeeper.quorum</name>
    <value>hadoop01,hadoop02,hadoop03</value>
    <description>The list of zookeeper servers to talk to. This is only needed for read/write locks.</description>
</property>

我开始勤俭节约的服务如下:

代码语言:javascript
复制
hive --service hiveserver -p 10000 &

服务器端错误日志显示没有找到HBaseSplit。但是为什么呢?我怎么才能解决这个问题?

EN

回答 3

Stack Overflow用户

发布于 2013-10-09 14:56:39

如果无法访问配置文件,可以使用

代码语言:javascript
复制
hive --auxpath /path/to/hive-hbase-handler-0.10.0-cdh4.2.0.jar,/path/to/hbase.jar 
票数 2
EN

Stack Overflow用户

发布于 2013-03-17 20:31:28

  1. 在$HIVE_HOME中创建一个辅助文件夹,并将所有hbase处理程序、hbase jars放到该文件夹中。
  2. 将以下行添加到$HIVE_HOME/conf/hive-site.xml hive.aux.jars.path file:/// 重新启动蜂箱服务器
票数 1
EN

Stack Overflow用户

发布于 2013-01-23 13:14:18

解决此问题的方法是要么将jar文件hive-handler 0.9.0-cdh4.1.2,hbase-0.92.1-cdh4.1.2-security等复制到HADOOP文件夹,要么在HADOOP_CLASSPATH环境变量中添加到这些jar的路径。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13231006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档