У меня возникла следующая проблема. У меня есть таблица Hbase. Теперь я хочу импортировать файл TSV в таблицу, используя java. Я попробовал ImportTsv, как показано ниже:
ImportTsv.main(new String[]{"-Dimporttsv.separator=\",\"", "-Dimporttsv.columns=HBASE_ROW_KEY,cf:content,cf:rate", "hive_hbase_mapping_test", "hdfs://localhost:9000/test/wal-872248319686050639.log"});
, но он выдаёт мне эту ошибку:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/util/Base64
at org.apache.hadoop.hbase.mapreduce.ImportTsv.createSubmittableJob(ImportTsv.java:462)
at org.apache.hadoop.hbase.mapreduce.ImportTsv.run(ImportTsv.java:720)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
at org.apache.hadoop.hbase.mapreduce.ImportTsv.main(ImportTsv.java:725)
at Test.main(Test.java:14)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.util.Base64
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
... 6 more
Я также пытаюсь запустить файл sh, содержащий команду hbase, как показано ниже:
hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator="," -Dimporttsv.columns=HBASE_ROW_KEY,cf:content,cf:rate $2 $1
Но похоже, что команда была проигнорирована. Затем я попытался выполнить команду на терминале, и она отлично работает.
Кто-нибудь дает мне подсказку или предложение для решения этой проблемы. Большое вам спасибо.