Archives of Support Questions (Read Only)

This is an archived board for historical reference. Information and links may no longer be available or relevant
Announcements
This board is archived and read-only for historical reference. To ask a new question, please post a new topic on the appropriate active board.

Inserting data into Hbase table through JAVA

avatar
Contributor

Hello,

 

I am trying to insert data into hbase table though hive table. Though command line , i am able to create and insert data into hbase table through hive.

My query for creating & inserting data into hbase is given below:

 

CREATE TABLE hbase_test5(key int COMMENT 'key', value string COMMENT 'value') STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:value") TBLPROPERTIES ("hbase.table.name" = "hbase_test5");

 

INSERT OVERWRITE TABLE hbase_test4 SELECT * FROM testhivehbase WHERE key=1;

 

testhivehbase is a table creted in HIVE.

 

 

Now I am trying to create & insert data into hbse table through jdbc.

 

My Java Program is given below:

 

package Hive;

import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager;

public class Hbasehive {

private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";

/**
* @param args
* @throws SQLException
*/
public static void main(String[] args) throws SQLException {
try {
System.out.println("hi");
Class.forName(driverName);
Connection con = DriverManager.getConnection("jdbc:hive://192.168.1.177:10001/default", "", "");
System.out.println("hello");
Statement stmt = con.createStatement();
stmt.executeQuery("drop table hbase_test5");
String sql = "CREATE TABLE hbase_test5(key int COMMENT 'key', value string COMMENT 'value') STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES (\"hbase.columns.mapping\" = \":key,cf1:value\") TBLPROPERTIES (\"hbase.table.name\" = \"hbase_test5\")";
System.out.println("Running: " + sql);
ResultSet res = stmt.executeQuery(sql);
System.out.println("Create Table Successfully");
String sql1 = "INSERT OVERWRITE TABLE hbase_test5 SELECT * FROM testhivehbase WHERE key=1";
System.out.println("Running: " + sql1);
ResultSet res1 = stmt.executeQuery(sql1);
System.out.println("Inserted Successfully");
}
catch (ClassNotFoundException e) {
System.out.println("--->"+e.getMessage());
e.printStackTrace();
System.exit(1);
}
System.out.println("Create Table-Successful");
// load data into table
// NOTE: filepath has to be local to the hive server
// NOTE: /tmp/a.txt is a ctrl-A separated file with two fields per line
}
}

 

 

Error:

 

Diagnostic Messages for this Task:
java.lang.RuntimeException: Error in configuring object
    at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:106)
    at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:72)
    at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:130)
    at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:413)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:332)
    at org.apache.hadoop.mapred.Child$4.run(Child.java:268)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:396)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1408)
    at org.apache.hadoop.mapred.Child.main(Child.java:262)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.ja

FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.MapRedTask
MapReduce Jobs Launched:
Job 0: Map: 1   HDFS Read: 0 HDFS Write: 0 FAIL
Total MapReduce CPU Time Spent: 0 msec

 

 

Please help me by providing some solution.

 

Thanks & Regards

Surbhi Singh

1 ACCEPTED SOLUTION

avatar
Contributor

Above problem has been solved by adding auxpath in hive-site.xml

View solution in original post

3 REPLIES 3

avatar
Expert Contributor

Add the following JARs to the classpath of the application. The version may be different.

 

/opt/hive/lib/hive-hbase-handler-0.8.0-SNAPSHOT.jar
/opt/hive/lib/hbase-0.90.1-SNAPSHOT.jar
/opt/hive/lib/zookeeper-3.3.1.jar
/hbase-0.94.1/hbase-0.94.6.jar
hive_contrib.jar

 

avatar
Expert Contributor

Add the 

/opt/hive/lib/hbase-0.90.1-SNAPSHOT.jar

 

instead of the 
/hbase-0.94.1/hbase-0.94.6.jar

 

Add only one of the hbase JARs.

avatar
Contributor

Above problem has been solved by adding auxpath in hive-site.xml