복붙노트

[SCALA] 스파크 작업을 작성할 때 SparkContext.getOrCreate를 사용하지 않는 이유가 있나요?

SCALA

스파크 작업을 작성할 때 SparkContext.getOrCreate를 사용하지 않는 이유가 있나요?

나는 불꽃 채용 정보를 Datastax에서 카산드라에게 그 이야기를 쓰고 있어요.

스파크 작업의 일련의 단계를 통해 작업 할 때 가끔, 그냥 새로운 RDD을 얻기보다는 이전에 가입하는 것이 더 쉽습니다.

당신은 SparkContext [getOrCreate] [1] 메소드를 호출하여이 작업을 수행 할 수 있습니다.

이제 때때로 SparkContext를 참조하여 직렬화 할 수없는 큰 객체 (스파크 컨텍스트)를 타고 시도하고 네트워크를 통해 배포 할 수있는 스파크 작업 내부의 우려가있다.

이 경우 - 당신은 직렬화의 문제를 해결 얻을 JVM이, 그리고 정도 싱글을 등록하고 있습니다.

어느 날 내 기술 리드는 나에게 와서 말했다

그러나 그는 이유를주지 않았다.

내 질문은 : 스파크 작업을 작성할 때 SparkContext.getOrCreate를 사용하지 않는 이유가 있나요?

해결법

  1. ==============================

    1.TL; DR 거기 getOrCreate 방법의 많은 합법적 인 응용 프로그램이 있지만지도 측 조인을 수행하는 허점을 찾기 위해 시도 할 그들 중 하나가 아닙니다.

    TL; DR 거기 getOrCreate 방법의 많은 합법적 인 응용 프로그램이 있지만지도 측 조인을 수행하는 허점을 찾기 위해 시도 할 그들 중 하나가 아닙니다.

    일반적으로 SparkContext.getOrCreate에 깊이 아무 문제가 없다. 이 방법은 해당 응용 프로그램이 있고, 거기에 몇 가지주의 사항이 있지만, 특히 :

    그러나 귀하의 질문에 구체적으로 :

    당신이 실제로 그것을 사용하기위한 적이있는 방식으로 방법을 사용하고 제안합니다. 집행자 노드 SparkContext를 사용함으로써.

    val rdd: RDD[_] = ???
    
    rdd.map(_ => {
      val sc = SparkContext.getOrCreate()
      ...
    })
    

    이것은 확실히 당신이하지 말아야 할 무언가이다.

    각 스파크 응용 프로그램은 하나를 가지고 있어야하고, 하나의 SparkContext는 드라이버를 초기화하고, 많은에서 만든 아파치 스파크 개발자는 드라이버 외부 SparkContex를 사용하는 어떤 시도하지 못하도록. 그것은 SparkContext가 직렬화 크거나 불가능하기 때문이 아니라 그것이 불꽃의 컴퓨팅 모델의 기본적인 기능이기 때문이다.

    당신은 아마 알다시피, 불꽃의 계산은 종속의 방향성 비순환 그래프에 의해 설명되어 있습니다 :

    마지막 부분에하자 초점을 맞 춥니 다. 각 집행 JVM은 SparkContext의 자체 인스턴스를 얻을 수 있기 때문에 순환 종속성 문제가되지 않습니다 - 응용 프로그램의 드라이버에 속하는 개체 수 없습니다 있도록 RDDs 및 데이터 세트는 부모 컨텍스트의 범위에서만 존재한다.

    적절한 자원 할당은 다른 것입니다. 각 SparkContext 자체 스파크 응용 프로그램을 생성하기 때문에, 당신의 "주"프로세스는 작업에서 초기화 컨텍스트에 의해 사용되는 리소스를 설명 할 수 없습니다. 동시에 클러스터 관리자에서 응용 프로그램 또는 어떻게 든 상호 시사하는 징후가되지 않습니다. 이 조건 교착 상태와 같은 원인 가능성이 높습니다.

    그것은주의 자원 할당 및 관리자 레벨의 스케줄링 풀, 또는 자신의 세트 또는 자원도 별도의 클러스터 관리자의 사용과, 그것의 주위에 이동하는 것은 기술적으로 가능하지만, 스파크 위해 설계되는 것이 아니라,이 지원되지 않습니다 및 전반적인 정확성이 구성 세부 사항, 특정 클러스터 관리자의 선택과 전체 클러스터의 활용도에 따라 달라 뒤얽힌 디자인, 취성으로 이어질 것입니다.

  2. from https://stackoverflow.com/questions/51153656/is-there-a-reason-not-to-use-sparkcontext-getorcreate-when-writing-a-spark-job by cc-by-sa and MIT license