hadoop - SQOOP 无法导入表

标签 hadoop sqoop sqoop2

我在 sqoop 上运行下面的命令

sqoop import --connect jdbc:mysql://localhost/hadoopguide --table widgets

我的 sqoop 版本:Sqoop 1.4.4.2.0.6.1-101
Hadoop -- Hadoop 2.2.0.2.0.6.0-101

均取自 hortonworks 发行版。 HADOOP_HOME、HCAT_HOME、SQOOP_HOME 等所有路径均已正确设置。通过在 sqoop 中运行 list-database、list-tables 命令,我能够从 mysql 数据库中获取数据库列表、表列表。甚至能够从 --query 'select * from widgets' 获取数据;但是当我使用 --table 选项时出现以下错误。

14/02/06 14:02:17 WARN mapred.LocalJobRunner: job_local177721176_0001
java.lang.Exception: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class widgets not found
        at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:403)
Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class widgets not found
        at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1720)
        at org.apache.sqoop.mapreduce.db.DBConfiguration.getInputClass(DBConfiguration.java:394)
        at org.apache.sqoop.mapreduce.db.DataDrivenDBInputFormat.createDBRecordReader(DataDrivenDBInputFormat.java:233)
        at org.apache.sqoop.mapreduce.db.DBInputFormat.createRecordReader(DBInputFormat.java:236)
        at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.<init>(MapTask.java:491)
        at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:734)
        at org.apache.hadoop.mapred.MapTask.run(MapTask.java:339)
        at org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:235)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
        at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.ClassNotFoundException: Class widgets not found
        at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1626)
        at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1718)
        ... 13 more

最佳答案

指定 --bindir编译后的代码和.jar文件应该位于。

如果没有这些参数,Sqoop 会将生成的 Java 源文件放在您当前的工作目录中,并将编译后的 .class文件和 .jar文件在 /tmp/sqoop-<username>/compile .

关于hadoop - SQOOP 无法导入表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21599785/

相关文章:

hadoop - Sqoop - 绑定(bind)到 YARN 队列

compiler-errors - Sqoop2 : Compile fails: missing org.apache.sqoop:sqoop-core:test-jar:tests:2.0.0-SNAPSHOT

scala - Cassandra 全表转储到 HDFS

hadoop - HDFS 未检测到数据节点容量增加

hadoop - Hadoop Sqoop导出到Teradata错误

hadoop - HBase与Sqoop兼容性

hadoop - hadoop和sqoop可以在不同机器上分开运行吗

hadoop - 如何在hadoop中处理长度前缀文件

hadoop - hadoop fs -getmerge中的SocketTimeoutException

oracle - 鱿鱼进口 Parquet 尺寸