sqoop 作业不是 运行 参数

sqoop job not running with parameters

我正在尝试 运行 一个 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

是否有任何语法issue.If任何人都可以提供帮助。

       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

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

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

我通过搜索找到了 this open issue,这让我相信存在阻止您正确覆盖参数的错误。


不幸的是,我没有找到解决此问题的方法,一些可能有助于解决此问题的方法:

  • 不同层次的参数化
  • 使用语法(如果它是 first/last 覆盖元素,它有帮助吗?如果您尝试覆盖并添加用户会怎样?如果您尝试覆盖查询参数而不是 table参数...)

这似乎是 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'并修改符号link 'sqoop.jar'指向'sqoop-1.4.5-cdh5.4.0.jar'

3) 虽然我不支持降级,但这还是很有魅力的。