2017-12-05 2 views
0

AWS docs는이 속성이 "작업 흐름 단계가 실행될 때 설정되는 Java 속성 목록입니다. 이러한 속성을 사용하여 JAR 파일의 기본 기능에 키 - 값 쌍을 전달할 수 있습니다."라고 설명합니다.HadoopJarStepConfig.StepProperties를 사용하는 방법?

하지만 전달 방법과 주요 기능 측면에서 키 - 값 쌍의 컬렉션에 올바르게 액세스하는 방법에 대한 설명은 없습니다 (적어도 필자는 찾지 못했습니다).

빠른 확인은 환경이나 명령 줄 인수를 통해 전달되지 않았 음을 증명합니다. 다른 방법이 있을까요?

답변

1

이 맵은 Java 시스템 속성으로 이동하고 System.getProperties() 호출을 통해 주 기능 측면에서 액세스 할 수 있지만 일부 명백한 의미가 있습니다.

먼저 염두에 두어야 할 것은 내부적으로 -Dkey = value 스위치로 환경 변수 HADOOP_CLIENT_OPTS를 통해 설정된다는 것입니다. 그러나 EMR은 셸 규칙에 따라 키와 값을 적절하게 이스케이프 처리하지 않습니다.

또한 인쇄 할 수없는 문자가있는 속성이있는 경우 구문 오류를보고하지 않으며 모두 설정하지 않습니다. 그리고 *와 같은 특수 쉘 문자로 더 나빠집니다.() \와 같은 - 적절한 설명없이 작업 실행에 실패하고 로그 레코드는 EMR 내부 쉘 스크립트 래퍼 내부의 일부 eval() 호출에서 문법 오류를 모호하게 가리킬 것입니다.

해당 동작에 대해 알고 있어야합니다.

속성은 셸에서 이스케이프해야하며 경우에 따라 셸에서 이스케이프 처리해야합니다.

관련 문제