我已经在mac和OSX10.9上安装并运行了hadoop/hbase/hive/set(可以在hdfs上创建文件,运行MapReduce作业,在hbase和hive中创建“表”)。我现在尝试将数据从mysql表导入sqoop(使用query,而不是表名等)。我用这个命令得到这个错误。
--COMMAND
sqoop import --connect jdbc:mysql:///joshLocal --username root --query "SELECT * FROM BITLOG WHERE \$CONDITIONS" --split-by oozie_job.id --hbase-table bitlogTest --hbase-create- table --column-family bitLogColumn
--ERROR
ERROR tool.ImportTool: Error during import: HBase jars are not present in classpath, cannot import to HBase!
我相信所有的出口变量都设置正确。我在swoop-env.sh中有以下内容
export HADOOP_HOME="/usr/local/Cellar/hadoop/2.4.0"
export HBASE_HOME="/usr/local/Cellar/hbase/0.98.1"
export HIVE_HOME="/usr/local/Cellar/hive/0.13.0"
export ZOOCFGDIR="/usr/local/etc/zookeeper"
export HCAT_HOME="/usr/local/Cellar/hive/0.13.0/libexec/hcatalog"
我所做的一件事给出了一个不同的消息,那就是在swoop-env.sh中将hbase home改为指向hbase\u home/libexec/lib。这给了我一个机会
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/util/Tool
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
错误。我看到一些建议说我需要通过hadoop安全jar文件复制到hbase的安装中。我不知道什么文件需要检查,如果这是一个问题。我认为这可能是因为java.security.secureclassloader在stacktrace中。
如果这是一个非常基本的java问题,我很抱歉,但我对它完全是个新手。
还有一个更基本的java问题。当我们定义hadoop\u home hbase\u home等时,我们在“告诉”其他依赖该信息的java程序什么。我们是说“这是可执行的java文件”还是说“这是lib文件夹中的jar文件”。我不太明白我到底应该指什么,因为我不知道这条路是怎么用的。
update-1:尝试将sqoop导入中的连接字符串更改为我在mysql中创建的新用户(sqoop@192.168.1.5). 对sqoop的新调用是
sqoop import --connect jdbc:mysql://wolfs-MacBook-Pro.local:3306/joshLocal --username sqoop --password sqoop --query "SELECT * FROM BITLOG WHERE \$CONDITIONS" --split-by oozie_job.id --hbase-table bitlogTest --hbase-create-table --column-family bitLogColumn
和以前一样的错误。hbase jar不存在。此外,我还创建了一些基本“表”,其中的“列”与我的sqoop请求相匹配,我认为这可能是问题的一部分。
update-2:在swoop-env.sh配置中将我的导出路径更新为
export HADOOP_HOME="/usr/local/Cellar/hadoop/2.4.0"
export HBASE_HOME="/usr/local/Cellar/hbase/0.98.1/libexec"
export HIVE_HOME="/usr/local/Cellar/hive/0.13.0/libexec"
export ZOOCFGDIR="/usr/local/etc/zookeeper"
export HCAT_HOME="/usr/local/Cellar/hive/0.13.0/libexec/hcatalog"
现在我得到了这个错误
Exception in thread "main" java.util.ServiceConfigurationError: org.apache.hadoop.fs.FileSystem: Provider org.apache.hadoop.hdfs.DistributedFileSystem could not be instantiated: java.lang.NoSuchMethodError: org.apache.hadoop.conf.Configuration.addDeprecations([Lorg/apache/hadoop/conf/Configuration$De precationDelta;)V
at java.util.ServiceLoader.fail(ServiceLoader.java:207)
at java.util.ServiceLoader.access$100(ServiceLoader.java:164)
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:360)
at java.util.ServiceLoader$1.n
在sqoop env文件中将hadoop的3个更新的导出路径更新为
export HADOOP_HOME="/usr/local/Cellar/hadoop/2.4.0/libexec"
快到了!导入作业创建了hbase表,但其中没有信息。我现在犯了这个错误。
jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId=
Exception in thread "main" java.lang.IncompatibleClassChangeError: Found interface org.apache.hadoop.mapreduce.JobContext, but class was expected
at org.apache.sqoop.mapreduce.DelegatingOutputFormat.checkOutputSpecs(DelegatingOutputFormat.java:63)
at org.apache.hadoop.mapreduce.JobSubmitter.checkSpecs(JobSubmitter.java:458)
at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:343)
顺便说一句-我正在运行sqoop1.4.4
1条答案
按热度按时间xurqigkl1#
您需要确保您使用的sqoop版本与您选择的hadoop版本兼容,对于不同版本的hbase+hadoop,您可以获得不同的sqoop可执行文件/jar