2017-08-14 57 views
1

這是我的Java HBase的CREATETABLE以下程序: -錯誤運行HBase的java程序

public class createtable 
{ 

    public static void main(String[] args) throws IOException 

    { 
     Configuration conf = HBaseConfiguration.create();  
     conf.set("hbase.zookeeper.quorum", "sandbox.hortonworks.com"); 
     conf.set("hbase.zookeeper.property.clientPort", "2181"); 
     conf.set("zookeeper.znode.parent", "/hbase-unsecure"); 
     HBaseAdmin admin = new HBaseAdmin(conf); 
     HTableDescriptor tableDescriptor = new HTableDescriptor(TableName.valueOf("people")); 
     tableDescriptor.addFamily(new HColumnDescriptor("personal")); 
     tableDescriptor.addFamily(new HColumnDescriptor("contactinfo")); 
     admin.createTable(tableDescriptor); 
     Put put = new Put(Bytes.toBytes("doe-john-m-12345");  
    } 

創建的jar程序的(表0.0.1-SNAPSHOT.jar)當我運行命令 後Hadoop的罐子表0.0.1-SNAPSHOT.jar table.createtable

我得到

Exception in thread "main" java.lang.NoClassDefFoundError:org/apachehadoop/hbase/HBaseConfiguration at 
    table.createtable.main(createtable.java:17) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.jav  a:43) 
     at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.apache.hadoop.util.RunJar.run(RunJar.java:234) 
    at org.apache.hadoop.util.RunJar.main(RunJar.java:148)       Causedby: 
    java.lang.ClassNotFoundException:org.apache.hadoop.hbase.HBase 
    Configuration  
    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 

how do i resolve this error ?? 
+0

我只是在另一個問題上回答了[這裏] [1] - https://stackoverflow.com/questions/10980072/hbase-classnotfoundexception/45676822#45676822 – Kamal

回答

1

你的代碼是不是能夠看到hbase.jar。嘗試在的pom.xml

<!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase --> 
<dependency> 
    <groupId>org.apache.hbase</groupId> 
    <artifactId>hbase</artifactId> 
    <version>0.90.2</version> 
</dependency> 

加入這一塊,然後運行它。

+0

我是否需要添加hbase版本(0.90.2) ,其添加hbase jar後仍然顯示相同的錯誤 –

+0

添加版本請 – Satya

+0

我的hbase版本是1.2.6添加依賴項後 - >缺少神器org.apache.hbase:hbase:jar:1.2.6在pom.xml中添加 –

1

請閱讀此博客:https://my-bigdata-blog.blogspot.com/2017/08/hbase-programming-on-map-reduce-with.html

兩個點,使其工作

1)你的代碼應該有TableMapReduceUtil.addDependencyJars(工作);

2)在命令行 - 執行命令之前:

出口HADOOP_CLASSPATH =您的-JAR路徑

出口HADOOP_CLASSPATH = $ HADOOP_CLASSPATH:hbase classpath

這增加了對HBase的圖書館執行。你在maven/netbeans中添加的是用於編譯的。

+0

請解釋步驟2做了什麼以及爲什麼需要 – quinz

+0

步驟2添加hbase庫以供執行。你在maven/netbeans中添加的是用於編譯的。該hbase類路徑應該在引號中執行。不能在這裏添加它們.. – Kamal

+0

好的..我認爲問題是在hadoop env.sh中的HADOOP_CLASSPATH ..我必須在導出HADOOP_CLASSPATH中設置? –

0

我解決了這個問題,因爲在製作fat jar時出現問題,並且在新的hbase版本jars被許多依賴關係棄用。所以我還添加了hbase-client-1.2.6-jar和hbase-common-1.2。 6罐外日蝕,然後建立脂肪罐......這解決了我的問題。