2014-09-30 78 views
0

我试图导入虚拟表(市)到HDFS用下面的命令:Sqoop无法导入任何行

$ sqoop import --connect jdbc:oracle:thin:@10.0.2.15:1521/XE --username system --password root --table cities --columns country,city --split-by id --target-dir /sqoop/output1 

,但没有行获得进口。

即得到由Sqoop生成的SQL语句是

SELECT t.* FROM cities t WHERE 1=0 

这是奇怪的,因为1永远不会等于零。

我运行:

Hadoop 2.4.1 
Sqoop 1.4.5 
+0

hduser @ debian:〜$ sqoop import --connect jdbc:oracle:thin:@ 10.0.2.15:1521/XE --username system --password root --table cities --columns country,city --split- by id --target-dir/sqoop/output3 – 2014-09-30 19:27:57

+0

14/09/30 14:22:46信息sqoop.Sqoop:运行Sqoop版本:1.4.5 14/09/30 14:22:47信息oracle.OraOopManagerFactory:用于Oracle和Hadoop的数据连接器已禁用。 14/09/30 14:22:47 INFO manager.SqlManager:使用默认的fetchSize为1000 14/09/30 14:22:47 INFO tool.CodeGenTool:开始代码生成 14/09/30 14:22: 56 INFO manager.OracleManager:时区已设置为GMT 14/09/30 14:22:56信息manager.SqlManager:执行SQL语句:SELECT t。* FROM cities t WHERE 1 = 0 – 2014-09-30 19:29:17

+0

我注意到它说:使用下限'id IS NULL'和上限'id IS NULL'创建输入分割 – 2014-09-30 19:44:11

回答

0

生成“where 1 = 0”的语句只是为了获取列的列表。实际选择稍后将在MR作业中完成。

问题是“城市”表不属于SYSTEM用户。

0

约瑟夫尝试删除分割的,并设置减速(-m参数)为1。如果它要成为好的就意味着你的分路器是坏的。我也有问题连接字符串格式为jdbc:oracle:thin:@10.0.2.15:1521/XE(认为它应该是jdbc:oracle:thin:@10.0.2.15:1521:XE或jdbc:oracle:thin:@ // 10.0.2.15:1521/XE无论如何 - 请阅读此JDBC)。但对我而言,只有这种格式正在工作:

jdbc:oracle:thin:@(description=(address=(protocol=tcp)(host=10.0.2.15)(port=1521))(connect_data=(service_name=XXXXXX)))