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) 虽然我不支持降级,但这还是很有魅力的。
我正在尝试 运行 一个 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) 虽然我不支持降级,但这还是很有魅力的。