importtsv hbase批量加载时出错

6ie5vjzr  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(303)

我有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
lsmepo6l

lsmepo6l1#

importtsv任务需要google的guava库才能运行。这个库位于$hbase\u home/lib/guava-.jar下,只需告诉hadoop在执行期间获取这个guava jar。只需将jar从hbase库复制到hadoop库。一个更合适的解决方案是将这个jar路径添加到hadoop类路径,或者使用下面的命令执行hadoop任务。 export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HBASE_HOME/lib/guava-<version>.jar
导出hadoop\u类路径= ``hbase classpath/hadoop jar/home/ericsson/desktop/projectfiles/hbase-0.94.0/hbase-0.94.0.jar importtsv-dimporttsv.columns=hbase\u row\u key,a,b,c,d,e,f,g'-dimporttsv.separator=,'test1/home/ericsson/desktop/projectfiles/inputfiles1/charginuses-m-00000*

相关问题