>

스파크 배치 작업을 실행 중이고 설정 중이라고 가정합니다. --num-executors 40

<올>
  • 이 작업은 20 개의 파티션이있는 kafka 주제를 읽습니다.
  • 이 작업은 20 개의 파티션이있는 kafka 주제에 씁니다.
  • 내 질문은 : 스파크 작업에 사용되는 실행 프로그램 수 에이. 카프카에서 읽는 동안 비. kafka에 쓰는 동안

    40 개의 실행기로 동일한 작업을 실행하는 동안 아래 매개 변수를 설정하면 변경되는 사항 --conf spark.dynamicAllocation.enabled = false

    • 답변 # 1

      먼저 질문에 대답하기 위해 스파크는20 개의 실행자 만(입력 kafka 파티션으로) 사용하고 나머지 실행자는 모든 작업에 할당됩니다.

      실행자 사용도 데이터로 수행 할변환 및 작업에 따라 다릅니다. 예를 들어

      <올>

      foreach기능을 적용한 경우 파티션 수는 동일하고 실행자는 동일합니다.

      맵을 다시 파티션을 적용한 경우 새 파티션 실행 프로그램을 기반으로

      호출됩니다.

      가장 좋은 방법은 기본 파티션보다 2 ~ 3 배 많은 파티션을 유지하는 것입니다.

      따라서 RDD가 있으면 sparkcontext.defaultParalleism ()을 사용하여 RDD를 2 ~ 3 번 다시 파티션 한 후 기본 파티션을 가져 오십시오. 이렇습니다

      newRDD =RDD.repartition (2 * sparkcontext.defaultParalleism ());

      spark.dynamicAllocation.enabled = false 인 경우 spark는로드를 기반으로 필요한 실행기를 할당 할 수 없습니다.

      spark.dynamicAllocation.enabled = true를 사용하고 RDD를 기본 크기의 2-3 배로 다시 분할하십시오.

  • 이전 microservices - Docker Compose에서 프론트 엔드 및 SSR 서비스 분할
  • 다음 python - 캔버스가있는 두 개의 별도 창에 텍스트를 인쇄하는 방법은 무엇입니까?