2014-09-10 52 views
2

我正在尝试运行带有自由格式查询的sqoop命令,因为我需要执行聚合。它通过Hue界面提交,作为Oozie工作流程。以下是命令和查询的缩小版本。处理命令时,“--query”语句(用引号括起来)导致查询的每个部分被解释为无法识别的参数,如命令后面的错误所示。另外,目标目录被误解。什么阻止了它的运行,以及可以采取哪些措施来解决它? $ {env}和$ {shard}变量正在被正确解析,如最后的错误信息所反映的那样。在Hue/Oozie中导致无法识别的参数的Sqoop自由格式查询

谢谢!

===========

进口--connect的jdbc:mysql的:// irbasedw- $ {}碎片.db.xxxx.net:3417/irbasedw_ $ {}碎片? dontTrackOpenResources = true & defaultFetchSize = 10000 & useCursorFetch = true --username iretl --password-file /irdw/${env}/lib/.passwordBaseDw --table agg_daily_activity_performance_stage -m 1 --query“SELECT SUM(click_count)FROM agg_daily_activity_performance_stage WHERE \ $条件GROUP BY 1" --target-DIR/irdw/$ {ENV} /传统/ AGG/activity_performance /文本/碎片_ $ {}碎片

==========

 
3881 [main] ERROR org.apache.sqoop.tool.BaseSqoopTool - Error parsing arguments for import: 
3881 [main] ERROR org.apache.sqoop.tool.BaseSqoopTool - Unrecognized argument: SUM(click_count) 
3881 [main] ERROR org.apache.sqoop.tool.BaseSqoopTool - Unrecognized argument: FROM 
3882 [main] ERROR org.apache.sqoop.tool.BaseSqoopTool - Unrecognized argument: agg_daily_activity_performance_stage 
3882 [main] ERROR org.apache.sqoop.tool.BaseSqoopTool - Unrecognized argument: WHERE 
3882 [main] ERROR org.apache.sqoop.tool.BaseSqoopTool - Unrecognized argument: \$CONDITIONS 
3882 [main] ERROR org.apache.sqoop.tool.BaseSqoopTool - Unrecognized argument: GROUP 
3882 [main] ERROR org.apache.sqoop.tool.BaseSqoopTool - Unrecognized argument: BY 
3882 [main] ERROR org.apache.sqoop.tool.BaseSqoopTool - Unrecognized argument: 1" 
3882 [main] ERROR org.apache.sqoop.tool.BaseSqoopTool - Unrecognized argument: --target-dir 
3882 [main] ERROR org.apache.sqoop.tool.BaseSqoopTool - Unrecognized argument: /irdw/test/legacy/agg/activity_performance/text/shard_0 
+0

请看这个http://grokbase.com/t/cloudera/cdh-user/134krrkwa1/can-you-help-trying-to-run-sqoop-with-oozie-got-exception。可能有用。 – Ilango 2014-09-11 06:26:06

回答

1

我能够得到这个工作。解决方法是将所有查询元素作为单独的参数提交。什么都不应该在“命令”窗口中。相反,从“import”作为第一个参数开始,将查询的每个部分作为单独的参数输入。每个元素的属性和值都作为单独的参数输入。例如:

 
arg: import 
arg: --connect 
arg: jdbc:mysql.... 
arg: --username 
arg: [username] 
arg: --password-file 
arg: [password file] 
arg: --query 
arg: select ..... 
arg: --target-dir 
arg: [target] 

该工作流程按预期执行。