Cheng,
You will have to add the appropriate HBase related jars to your class path.

You can do that by running "add jar" command(s) or put it in aux_lib. See
this thread for reference:
http://mail-archives.apache.org/mod_mbox/hive-user/201103.mbox/%3caanlktingqlgknqmizgoi+szfnexgcat8caqtovf8j...@mail.gmail.com%3E

Mark


On Mon, Nov 5, 2012 at 6:53 AM, Cheng Su <scarcer...@gmail.com> wrote:

> Hi, all. I have a hive+hbase integration cluster.
>
> When I try to execute query through the java client of hive, sometimes
> a ClassNotFoundException happens.
>
> My java code :
>
> 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')");
>
> I can execute the sql:SELECT count(*) FROM test_table WHERE (source =
> '0' AND ur_createtime BETWEEN '20121031000000' AND '20121031235959')
> in hive cli mode, and get the query result, so there is no error in my
> sql.
>
> The client side exception:
>
> 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
>
> The server side exception(hadoop-jobtracker):
>
> 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
>
>
> My hive-env.sh
>
> 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
>
>
> My hive-site.xml
>
> <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>
>
>
> And I start thrift service as below:
>
> hive --service hiveserver -p 10000 &
>
>
> The server side error log says that HBaseSplit is not found. But why?
> How can I fix this?
>
> --
>
> Regards,
> Cheng Su
>

Reply via email to