sqoop作业未使用参数运行

qzlgjiam  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(412)

我正在尝试运行sqoop作业。我正在使用sqoop版本sqoop 1.4.6-cdh5.8.0,但它不适用于此版本
它与sqoop1.4.5-cdh5.4.0配合良好。

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

有语法问题吗?如果有人能帮忙的话。

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

bqf10yzr1#

假设您已经做了基本的检查(比如在作业中手动放置参数并执行它),我会说语法看起来是正确的。
在查看文档时,提到可以覆盖属性。不幸的是,它们只显示添加属性的示例,而不显示重写属性的示例。
通过搜索,我找到了这个公开的问题,这让我相信有一个bug阻止您正确地重写参数。
不幸的是,我没有找到解决这个问题的方法,有些方法可能有助于解决这个问题:
在不同级别上参数化
使用语法(如果它是第一个/最后一个override元素,会有帮助吗?如果您尝试重写并添加一个用户,如果您尝试重写query参数而不是table参数,会有帮助吗…)

hmtdttj4

hmtdttj42#

这似乎是sqoop-1.4.6-cdh5.8.0和sqoop-1.4.6-cdh5.9.0中的一个bug
但是,正如您所提到的,它在1.4.5版本中工作正常。
以下解决方案对我有效:
1) 从下载'sqoop-1.4.5-cdh5.4.0.jar'http://repo.spring.io/libs-release/org/apache/sqoop/sqoop/1.4.5-cdh5.4.0/
2) 将“sqoop-1.4.6-cdh5.8.0.jar”替换为“sqoop-1.4.5-cdh5.4.0.jar”,并修改符号链接“sqoop.jar”以指向“sqoop-1.4.5-cdh5.4.0.jar”
3) 虽然我不支持降级,但这仍然很有魅力。

相关问题