2013-02-15 62 views
0

我有hbase 0.94.0。我嘗試使用importtsv工具進行批量導入。 這是我送給ImportTsv-HBASE BULK LOAD中的錯誤

./hadoop jar /home/ericsson/Desktop/ProjectFiles/hbase-0.94.0/hbase-0.94.0.jar importtsv -Dimporttsv.columns=HBASE_ROW_KEY,a,b,c,d,e,f,g '-Dimporttsv.separator=,' Test1 /home/ericsson/Desktop/ProjectFiles/inputFiles1/CharginUsage-m-00000 

的Test1,我已經存在於HBase的表的命令。 /home/ericsson/Desktop/ProjectFiles/inputFiles1/CharginUsage-m-00000-我的目錄,我有CSV文件。

我得到了以下錯誤:

Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/collect/Multimap 
    at org.apache.hadoop.hbase.mapreduce.Driver.main(Driver.java:43) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 
    at org.apache.hadoop.util.RunJar.main(RunJar.java:156) 
Caused by: java.lang.ClassNotFoundException: com.google.common.collect.Multimap 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 
    ... 6 more 

回答

2

importtsv任務需要谷歌的番石榴庫才能運行。此庫存在$ HBASE_HOME/lib/guava-.jar 這是在執行期間告訴hadoop獲取此番石榴罐的問題。簡單地說,你可以將jar從hbase lib複製到hadoop lib。更合理的解決方案是將此jar路徑添加到hadoop classpath或使用以下命令執行hadoop任務。

export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HBASE_HOME/lib/guava-<version>.jar

OR

出口HADOOP_CLASSPATH = `hbase classpath`/ hadoop的罐子/home/ericsson/Desktop/ProjectFiles/hbase-0.94.0/hbase-0.94.0.jar importtsv -Dimporttsv.columns = HBASE_ROW_KEY,a,b,c,d,e,f,g'-Dimporttsv.separator =,'Test1/home/ericsson/Desktop/ProjectFiles/inputFiles1/CharginUsage-m-00000 *