복붙노트

[HADOOP] 루프 사용하여 명령에 인수를 전달합니다

HADOOP

루프 사용하여 명령에 인수를 전달합니다

나는이 출력을 생성 명령 아래에 있습니다

명령:

oozie job -info 0007218-170910003406158-oozie-oozi-W | grep job | awk '{print $3}' | cut -c1-23 | sed 's/job/application/'

산출:

application_1505017974932_23474
application_1505017974932_23478
application_1505017974932_23477
application_1505017974932_23473
application_1505017974932_23475
application_1505017974932_23471
application_1505017974932_23469
application_1505017974932_23476
application_1505017974932_23472
application_1505017974932_23470
application_1505017974932_23495
application_1505017974932_23497
application_1505017974932_23500
application_1505017974932_23501

난에 로그 파일을 저장하는 명령과 함께 아래에 입력 이들 출력 선을 통과해야 / TMP 폴더

원사 로그 -applicationId <애플리케이션 ID> -Owner <사용자 ID>> /tmp/.txt

하나의 구문은 for 루프를 사용하고 있지만 도전에 직면하여이 문제를 자동화하려고합니다. 문제가 발생되는 루프 전류는 아래와 같다

for appid in `oozie job -info 0007218-170910003406158-oozie-oozi-W | grep job | awk '{print $3}' | cut -c4-23 | sed 's/job/application/'`; do yarn logs -applicationId "${appid}" -Owner user9 > /tmp/ "${appid}"; done

현재 아래와 같은 오류를 얻고있다

Invalid ApplicationId specified
Invalid ApplicationId specified
Invalid ApplicationId specified
Invalid ApplicationId specified
Invalid ApplicationId specified

우리가 매개 변수로 바로 애플리케이션 ID를 지정하지 않은 경우 일반적으로 우리는이를 얻을 것이다.

해결법

    from https://stackoverflow.com/questions/46372820/using-for-loop-to-pass-arguments-to-command by cc-by-sa and MIT license