sqoop作业未使用参数

时间:2016-12-23 13:14:38

标签: hadoop sqoop

我正在尝试运行一个sqoop作业。我正在使用sqoop版本 Sqoop 1.4.6-cdh5.8.0 而且它不适用于此版本

使用Sqoop 1.4.5-cdh5.4.0可以正常工作。

 sqoop job --create E8 -- import  --connect jdbc:mysql://localhost/test -- username root --password cloudera --table NAME --hive-import -m1

 sqoop job --exec E8 -- --table dummy1

是否有任何语法问题。如果有人可以提供帮助。

       Warning: /usr/lib/sqoop/../accumulo does not exist! Accumulo 
       imports  will fail.
       Please set $ACCUMULO_HOME to the root of your Accumulo installation.
       16/12/23 04:48:10 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6-
       cdh5.8.0
       Enter password: 
       16/12/23 04:48:19 INFO manager.MySQLManager: Preparing to use a 
       MySQL  streaming resultset.
       16/12/23 04:48:19 INFO tool.CodeGenTool: Beginning code generation
       16/12/23 04:48:20 INFO manager.SqlManager:
       Executing SQL statement: SELECT t.* FROM `NAME` AS t LIMIT 1
       16/12/23 04:48:20 ERROR manager.SqlManager: Error executing 
       statement: 
       com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table    
      'test.NAME' doesn't exist

2 个答案:

答案 0 :(得分:3)

假设您已经完成了基本检查(比如手动将参数放入作业并执行),我会说语法看起来是正确的。

在查看the doc时,提到可以覆盖属性。不幸的是,他们只显示了一个添加属性的示例,并且没有显示重写属性。

搜索引导我this open issue,这让我相信有一个错误会阻止你正确地覆盖参数。

不幸的是,我没有看到解决方案,有些事情可能有助于解决问题:

  • 在不同级别进行参数化
  • 使用语法播放(如果它是第一个/最后一个覆盖元素,如果您尝试覆盖AND添加用户,如果您尝试覆盖查询参数而不是表参数,该怎么办...)

答案 1 :(得分:2)

这似乎是sqoop-1.4.6-cdh5.8.0和sqoop-1.4.6-cdh5.9.0中的错误

然而,正如您所提到的,这与1.4.5版本一起正常工作。

以下解决方案对我有用:

1)从http://repo.spring.io/libs-release/org/apache/sqoop/sqoop/1.4.5-cdh5.4.0/下载'sqoop-1.4.5-cdh5.4.0.jar'

2)将'sqoop-1.4.6-cdh5.8.0.jar'替换为'sqoop-1.4.5-cdh5.4.0.jar'并修改符号链接'sqoop.jar'以指向'sqoop-1.4 0.5-cdh5.4.0.jar'

3)虽然我不支持降级,但仍然可以作为魅力。