2016-10-24 6 views
2

TL시간 제한 pyspark 작업

pyspark 작업을 시간 종료하는 방법이 있습니까? 클러스터 모드에서 실행중인 스파크 작업이 미리 지정된 시간보다 오래 실행되면 자동으로 강제 종료되도록합니다.

긴 버전 : the documentation에 나와

애매한 시간 제한은 무한대를 제외한 대부분의 120S에 있지만, spark.dynamicAllocation.enabled가 true로 설정되어있는 경우 이것 만 사용되지만, 기본적으로 (I 이 클러스터에서 모든 구성 매개 변수를 터치하지 마십시오.) false입니다.

특정 병리학 적 입력에 대해 매우 느리게 실행되는 코드가 있기 때문에 알고 싶습니다. 예상 입력에 대한 작업은 1 시간 이내에 종료됩니다. 병리학 적 입력을 탐지하는 것은 문제를 해결하는 것만큼이나 어렵 기 때문에 영리한 전처리를 수행 할 수있는 옵션이 없습니다. 코드의 세부 사항은 지루하고 관련성이 없어서 읽을 필요가 없습니다.)

저는 pyspark를 사용하여 전화를 걸어서 this과 같은 전화 번호를 사용하는 것처럼 꾸며 보았습니다. 솔루션은 클러스터 모드에서 작동하지 않습니다. bash 스크립트에서 spark-submit을 통해 spark 코드를 호출합니다.하지만 spash 작업이 실행 중일 때 bash가 "잠자기 상태가됩니다"라는 사실을 알기 전까지는 스파크 작업이 종료되면 다시 제어권 만 얻습니다. 그래서 나는 이것을 생각하지 않습니다. 옵션입니다.

실제로 영리한 일을했다면 배쉬가 해결 될 수도 있지만 this과 같은 작업의 드라이버 ID를 얻어야합니다. 이제는 "너무 많은 생각과 타이핑이 필요합니다. 타임 아웃 (timeout)과 같이 단순한 것 "이라고 말했다.

+0

더 많은 정보를 우리가 당신을 도울 수 있습니다 더 나은 기회를 공유 할 수 있습니다. –

+0

난 그냥 특정 시간보다 오래 실행되는 경우 클러스터 모드에서 실행중인 스파크 작업을 자동으로 죽이는 구성 매개 변수가 어딘가에 있는지 알고 싶습니다. –

+0

나는 내가 시도한 것에 관한 좀 더 관련있는 정보를 추가했다! –

답변

0

고전 파이썬 경보를 설정할 수 있습니다. 그런 다음 핸들러 함수에서 예외를 발생 시키거나 sys.exit() 함수를 사용하여 드라이버 코드를 완료 할 수 있습니다. 운전사가 끝내면, 원숭이는 전체 신청을 죽입니다.

당신은 문서에 사용 예를 찾을 수 있습니다 https://docs.python.org/3/library/signal.html#example

+0

다른 시도를해볼 수 있습니다. 여기 http://stackoverflow.com/questions/2281850/timeout-function-if-it-takes-too-long-to-finish 예제를 따르려고했지만 이것은 잘 작동하지 않았습니다. –