수색…


소개

이 주제의 목적은 Apache Spark 관련 질문을 할 때 모범 사례를 문서화하는 것입니다.

환경 세부 정보 :

Apache Spark 관련 질문에 다음 정보를 포함 시키십시오.

  • 적용 가능한 경우 클라이언트 및 Spark 배포에 사용되는 Apache Spark 버전입니다. API 관련 질문의 경우 주요 버그 (1.6, 2.0, 2.1 등)가 일반적으로 충분합니다. 가능한 버그에 관한 질문은 항상 정식 버전 정보를 사용합니다.
  • Spark 바이너리를 빌드하는 데 사용되는 스칼라 버전.
  • JDK 버전 ( java -version ).
  • 게스트 언어 (Python, R)를 사용하는 경우 언어 버전에 대한 정보를 제공하십시오. 파이썬에서는 다음과 같은 태그를 사용합니다 : , 또는 언어 변형을 구별하기위한보다 구체적인 태그.
  • 해당되는 경우 정의 ( build.sbt , pom.xml ) 또는 해당되는 경우 외부 종속성 버전 (Python, R)을 빌드하십시오.
  • 적용 가능한 경우 클러스터 관리자 ( local[n] , 스파크 독립 실행 형, 스레드, 메소), 모드 ( client , cluster ) 및 기타 제출 옵션

데이터 및 코드의 예

예제 데이터

분산 데이터 구조를 작성하는 데 필요한 모든 코드로 입력 파일 또는 로컬 콜렉션과 같은 지루하고 시간이 많이 드는 구문 분석없이 응답에서 직접 사용할 수있는 형식으로 최소한의 예제 입력 데이터를 제공하십시오.

해당되는 경우 항상 유형 정보를 포함하십시오.

  • RDD 기반 API에서 필요한 경우 주석을 사용하십시오.
  • DataFrame 기반 API에서 같은 스키마 정보 제공 StrucType 에서 또는 출력 Dataset.printSchema .

Dataset.show 또는 print 출력은 좋게 보이지만 기본 유형에 관해서는 아무 것도 알려주지 않습니다.

규모면에서만 특별한 문제가 발생하면 임의의 데이터 생성기를 사용하십시오 (Spark는 org.apache.spark.mllib.random.RandomRDDsorg.apache.spark.graphx.util.GraphGenerators 에서 유용한 유틸리티를 제공합니다)

암호

가능한 경우 유형 주석을 사용하십시오. 컴파일러는 유형을 쉽게 추적 할 수 있지만 단순한 필사자에게는 그렇게 쉽지 않습니다. 예 :

val lines: RDD[String] = rdd.map(someFunction)

또는

def f(x: String): Int = ???

~보다 낫다.

val lines = rdd.map(someFunction)

def f(x: String) = ???

각기.

진단 정보

디버깅 질문.

질문이 특정 예외를 디버깅하는 것과 관련된 경우 항상 관련 추적을 제공하십시오. 중복 된 출력을 (다른 실행자 또는 시도에서) 제거하는 것이 바람직하지만, 추적 라인을 단일 행 또는 예외 클래스로만 잘라 내지 마십시오.

성능 관련 질문.

컨텍스트에 따라 다음과 같은 세부 정보를 제공하십시오.

  • RDD.debugString / Dataset.explain .
  • 적용 가능한 경우 DAG 다이어그램을 사용하여 Spark UI에서 출력 할 수 있습니다.
  • 관련 로그 메시지.
  • 외부 도구에 의해 수집 된 진단 정보 (Ganglia, VisualVM).

물어보기 전에



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow