2016-12-23 48 views
4

我想运行。我现在用sqoop版本Sqoop 1.4.6-cdh5.8.0一个sqoop任务运行,并且不工作的这个版本sqoop工作不带参数

它工作正常使用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 
+0

您确定该表存在MySQL中的测试数据库_(具有相同大小写)_? –

+0

是表dummy1存在,它不是replcaing参数,但在选择查询中的名称 – coder25

+0

AS根据文档,它应该替换它。语法对我来说似乎很好。你可以尝试从创建作业命令中删除'--table NAME',而所有这些只在exec? –

回答

3

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

在看着the doc时,提到可以覆盖属性。不幸的是,它们只显示了一个添加属性的示例,并且不显示覆盖属性。

搜索导致我到this open issue这导致我相信有一个错误,可以防止你正确地覆盖参数。


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

  • 参数化在不同的级别
  • 播放与语法(做它帮助如果它是第一个/最后一个覆盖元素,如果您尝试覆盖并添加用户,如果尝试覆盖查询参数而不是表格参数,会发生什么情况...)
+0

如何覆盖it.i没有得到这一点 – coder25

+0

他们提供的补丁是什么 – coder25

+0

@ coder25覆盖可能无法正常工作。你当然可以作为一种解决方法,而不是创建作业并用参数调用它,而是直接使用所有参数运行作业。 - 我不喜欢判断这个补丁,但是看看这个网站我相信这个补丁还没有经过测试和实现。 –

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/

2下载 'sqoop-1.4.5-cdh5.4.0.jar')替换“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)虽然我不支持降级,但仍然可以作为魅力使用。