我有hbase 0.94.0。我尝试使用importtsv工具进行批量导入。 这是我给出的命令
./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
答案 0 :(得分:3)
importtsv任务需要Google的Guava库才能运行。该库位于 $ HBASE_HOME / lib / guava-.jar 下 这是告诉hadoop在执行期间获取这个番石榴罐的问题。您只需将jar从hbase lib复制到hadoop lib即可。更合适的解决方案是将此jar路径添加到hadoop类路径或使用以下命令执行hadoop任务。
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HBASE_HOME/lib/guava-<version>.jar
OR
export HADOOP_CLASSPATH = `hbase classpath
`/ 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 *