2016-04-18 15 views
0

私はこのようなHBaseのにJavaアプリケーションから接続しようとしている:HBaseのJavaのAPI接続エラー

Configuration config = HBaseConfiguration.create(); 
    config.set("hbase.zookeeper.quorum", "localhost"); 
    config.set("hbase.zookeeper.property.clientPort", "2181"); 
    config.set("zookeeper.znode.parent", "/hbase-unsecure"); 

    config.set("hbase.client.retries.number", Integer.toString(0)); 
    config.set("zookeeper.session.timeout", Integer.toString(60000)); 
    config.set("zookeeper.recovery.retry", Integer.toString(0)); 

    Connection conn = ConnectionFactory.createConnection(config); 
    TableName TABLE_NAME = TableName.valueOf("weblog"); 
    Table table = conn.getTable(TABLE_NAME); 
    Result r = table.get(new Get(Bytes.toBytes("row1"))); 
    System.out.println(r); 

私はJARにアプリケーションを建てたがとクラスタ上で実行している場合:

hadoop jar hbaseConnect-0.0.1-SNAPSHOT.jar com.packagename.hbaseConnect.HbaseConnect 
私はこのようにhadoop-ENVにHADOOP_CLASSPATHにHBASE_CLASSPATHを追加しようとしました

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration 
    at com.DigiMerket.hbaseConnect.HbaseConnect.main(HbaseConnect.java:23) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at org.apache.hadoop.util.RunJar.run(RunJar.java:221) 
    at org.apache.hadoop.util.RunJar.main(RunJar.java:136) 
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.HBaseConfiguration 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 7 more 

iは次のエラーを取得しますpostが示唆しかし、私は同じエラーを取得します..次のように「HADOOP_CLASSPATH」を設定することで解決

答えて

0

発行して、同じ端末でのHadoop/HBaseのjarを実行します。

export HADOOP_CLASSPATH="$HADOOP_CLASSPATH:/usr/hdp/2.3.4.0-3485/hbase/lib/hbase-client.jar:/usr/hdp/2.3.4.0-3485/hbase/lib/hbase-common.jar:/usr/hdp/2.3.4.0-3485/hbase/lib/hbase-protocol-1.1.2.2.3.4.0-3485.jar:.:" 

実行瓶

hadoop jar hbaseConnect-0.0.1-SNAPSHOT.jar com.packagename.hbaseConnect.HbaseConnect 
0

ログには、JARの実行に必要な他のJARが必要です。 HBaseの-client.jarのような

LIBSのようなMKDIRとLIBS のディレクトリにあなたに依存jarファイルを入れて、次のコマンドを使用します。 のjava -Djava.ext.dirs =/XXX/XXX/XXX/libに-jar/xxx/xxx /あなたの瓶

あなたが助けることを望む。