2014-09-10 3 views
2

집계를 수행해야하므로 자유 형식 쿼리로 sqoop 명령을 실행하려고합니다. 그것은 Oozie 워크 플로우와 같이 Hue 인터페이스를 통해 제출됩니다. 다음은 명령과 쿼리의 축소 버전입니다. 명령이 처리 될 때 "--query"문 (따옴표로 묶여 있음)은 명령 다음에 나오는 오류와 같이 쿼리의 각 부분이 인식 할 수없는 인수로 해석되도록합니다. 또한 대상 디렉토리가 잘못 해석되고 있습니다. 이것이 실행을 방해하는 원인은 무엇이며이를 해결하기 위해 할 수있는 일은 무엇입니까? $ {env} 및 $ {shard} 변수는 마지막 오류 메시지에 반영된대로 올바르게 구문 분석됩니다.색조/Oozie에서 인식 할 수없는 인수를 일으키는 Sqoop 자유 형식 쿼리

감사합니다.

===========

수입 --connect JDBC한다 : mysql : // irbasedw- $ {파편} .db.xxxx.net : 3417/irbasedw_ $ {파편}? dontTrackOpenResources = true & defaultFetchSize = 10000 & useCursorFetch = true - 사용자 이름 iretl --password-file /irdw/${env}/lib/.passwordBaseDw --table agg_daily_activity_performance_stage -m 1 --query "SELECT SUM (클릭 _ 개수) FRG agg_daily_activity_performance_stage WHERE 1 "--target-DIR/irdw/$ {ENV}/기존/AGG/activity_performance/텍스트/파편 BY \ $ 조건 GROUP _ $ {파편}

==========

 
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

답변

1

이 작업을 수행 할 수있었습니다. 해결 방법은 모든 쿼리 요소를 별도의 인수로 제출하는 것입니다. "명령"창에 아무것도 없어야합니다. 대신 "가져 오기"를 첫 번째 인수로 시작하여 쿼리의 각 부분을 별도의 인수로 입력하십시오. 각 요소의 등록 정보 및 값은 별도의 인수로 입력됩니다. 예 :

 
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] 

워크 플로가 예상대로 작동합니다.