복붙노트

[HADOOP] Hue / Oozie에서 인식 할 수없는 인수를 유발하는 Sqoop 자유 형식 쿼리

HADOOP

Hue / Oozie에서 인식 할 수없는 인수를 유발하는 Sqoop 자유 형식 쿼리

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

고맙습니다!

===========

가져 오기 --connect jdbc : mysql : // irbasedw- $ {shard} .db.xxxx.net : 3417 / irbasedw_ $ {shard}? dontTrackOpenResources = true & defaultFetchSize = 10000 & useCursorFetch = true --username iretl --password-file / irdw / $ {env} /lib/.passwordBaseDw --table agg_daily_activity_performance_stage -m 1 --query "agg_daily_activity_performance_stage WHERE \ $ CONDITIONS GROUP BY 1에서 SELECT SUM (click_count) 선택) --target-dir / irdw / $ {env} / legacy / agg / activity_performance / text / shard _ $ {shard}

==========

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

해결법

  1. ==============================

    1.나는 이것을 작동시킬 수있었습니다. 해결책은 모든 쿼리 요소를 별도의 인수로 제출하는 것입니다. "명령"창에 아무것도 없어야합니다. 대신 "import"를 첫 번째 인수로 시작하여 쿼리의 각 부분을 별도의 인수로 입력하십시오. 각 요소의 속성과 값은 별도의 인수로 입력됩니다. 예를 들면 다음과 같습니다.

    나는 이것을 작동시킬 수있었습니다. 해결책은 모든 쿼리 요소를 별도의 인수로 제출하는 것입니다. "명령"창에 아무것도 없어야합니다. 대신 "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]
    

    워크 플로가 예상대로 수행됩니다.

  2. from https://stackoverflow.com/questions/25770698/sqoop-free-form-query-causing-unrecognized-arguments-in-hue-oozie by cc-by-sa and MIT license