2016-10-06 2 views
2

나는 스파크를 처음 접하고 내 길을 찾고있다.Spark worker의 맵 기능에서 오류를 디버깅하려면 어떻게해야합니까?

데이터 세트을 통해 복잡한지도 기능을 실행하는 스파크 애플리케이션이 있습니다. 이지도 함수는 주로 데이터 관련 이유로 실패 할 수 있습니다. 무엇이 잘못되었는지에 대한 의미있는 정보를 얻으려면 어떻게해야합니까? 어디서부터 시작해야할지 모르겠습니다.

감사합니다.

답변

0

좋아, 그래서 이것은 실제로 가능하지만, 몇 가지 함정이 있습니다

이 대답은 당신이 필요로하는 것을 포함해야한다.

광범위하게, 그럼 당신은 예외를 기록하기 위해 wasError 필드를 테스트 할 수 있습니다지도 기능 등

class CalcResult(object): 

    def __init__(self): 
     self.dataResult=None 
     self.TraceBackStr=None 
     self.wasError=None 

에서 결과를 캡슐화하는 클래스를 만듭니다.

예외 개체는 선택할 수 없으므로 추적 개체가 될 수 없습니다. 그래서, 나는 형식화 된 문자열을 제안한다.

0

단위 테스트를 작성하려는 경우 컬렉션에서 데이터 집합을 생성하고지도 함수를 사용하여 매핑 한 다음 원하는 테스트 제품군을 사용하여 결과를 테스트 할 수 있습니다.

PySpark를 사용하는 경우 스파크 작업을 어떻게 디버깅 할 수 있었는지는 모르겠지만 분산 컴퓨팅 엔진을 사용하면 디버그 모드가 항상 엉망이므로이 경로를 탐색 할 가치가 있다고 생각조차하지 않습니다.

우리 회사에서는 일반적으로 특정 기능의 논리를 테스트 할 때 단위 테스트를 수행합니다. How do I unit test PySpark programs?

+0

코드가 특정 테스트 데이터 집합에서 제대로 실행됩니다. 그것의 큰 입력 데이터 집합을 통해 거기에 거기에 특정 값을 논리가 실패 원인이 있습니다. 그 가치가 무엇인지 알고 싶습니다. 1000 개의 입력 세트 중 1 개만 실패 할 수 있으므로 일부를 확인하는 것이 도움이되지 않습니다. 데이터 세트에서 값이 잘못되었을 수도 있습니다. – ThatDataGuy

+0

"실패"한다는 것은 무엇을 의미합니까? 예외가 발생하면 잡으려고하십시오. 잘못된 값을 생성하는 경우 그냥 출력 (출력) 대신 (입력 및 출력)을 반환하고 어떤 종류의 입력이 출력의 예외를 생성했는지 (필터가 있을지도 모름). – Chobeat

+0

예외를 throw하고 map 함수에서 catch한다는 것을 알 수 있습니다. 그러면 그걸로 무엇을 할 수 있을까요? 로그 할 수 있습니까? 로그는 어디에 있습니까? – ThatDataGuy

관련 문제