2017-05-24 1 views
2

어쨌든 spark에서 출력을 잡아 쉘에 입력 할 수 있습니까? 우리는 현재 jar 파일을 생성하고 스파크 출력을 쉘 입력으로 만들기 위해 스칼라를 사용하고 있습니다. 내 생각은 $ {wf : actionData ('spark-XXXX') [ 'var']}를 사용하는 것입니다. 저는 spark에서 구현하는 방법을 모르겠습니다. 그래서 기본적으로, 내 문제는 oozie에서 스파크 키 = 값 쌍을 출력하는 방법입니다.oozie spark output을 잡는 방법

+0

RTFM과 동일한 효과를 직접 체험 - 스파크 작업을 수행 적어도 현재 버전의 Oozie (V4.3)에서는''을 지원하지 않습니다; Spark https://oozie.apache.org/docs/4.3.0/DG_SparkActionExtension.html 및 자바 작업 https://oozie.apache.org/docs/4.3.0/WorkflowFunctionalSpec.html#에 대한 최신 XML 스키마를 비교해보십시오. Oozie_Schema_Version_0.5 –

답변

1

sprak 작업을 shell action으로 감싸고 셸 스크립트에서 spark submit을 사용할 수 있습니다. shell action<capture-output> 옵션을 지원하므로 콘솔에 변수를 인쇄 할 수 있습니다 : variable_name=value.

그런 다음, 다른 작업에 매개 변수로 ${wf:actionData('shell_action_name')['variable_name']}

나는이 때문에 '깨끗한'아니라는 것을 알고,하지만 작동하고 spark action

+0

쉘은 필요한 모든 Spark 라이브러리, Spark 구성 및'spark-submit'과 같은 Spark 쉘 스크립트에 접근 할 수 있습니다. Spark이 작업자 노드에 설치되지 않은 일반적인 경우에는 설치가 쉽지 않습니다. –

+0

또한 셸은 정크 메일이'stdout'을 만들지 않도록해야합니다. 2048 바이트를 초과하여 수집하고 워크 플로를 크래시하면''기능이 실패합니다. –

+0

예, 원사 노드에 스파크를 설치해야하지만, 작동 범위에 모든 종속성을 확보하는 것은 어렵지 않습니다. 그리고 네, 버퍼를 초과하지 않도록 출력을 제어 할 필요가 있습니다. 또한 확신하기가 어렵지 않고 애플리케이션 로그를 파일에 기록합니다. –