복붙노트

[HADOOP] Spark에서 RDD의 복제 팩터를 변경하는 방법이 있습니까?

HADOOP

Spark에서 RDD의 복제 팩터를 변경하는 방법이 있습니까?

내가 이해 한 바에 따르면, 클러스터의 RDD에는 여러 개의 데이터 사본이 있으므로 노드 장애시 프로그램을 복구 할 수 있습니다. 그러나 실패 가능성을 무시할 수있는 경우 RDD에 여러 개의 데이터 사본을 갖는 것은 메모리 비용이 많이 듭니다. 제 질문은 Spark에 매개 변수가 있습니까?이 매개 변수는 RDD의 복제 요소를 줄이는 데 사용할 수 있습니까?

해결법

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

    1.첫째, Spark는 모든 RDD를 자동으로 캐시하지 않습니다. 단순히 응용 프로그램이 많은 RDD를 생성 할 수 있고 모든 RDD가 재사용되는 것은 아니기 때문입니다. .persist () 또는 .cache ()를 호출해야합니다.

    첫째, Spark는 모든 RDD를 자동으로 캐시하지 않습니다. 단순히 응용 프로그램이 많은 RDD를 생성 할 수 있고 모든 RDD가 재사용되는 것은 아니기 때문입니다. .persist () 또는 .cache ()를 호출해야합니다.

    RDD를 유지하려는 스토리지 레벨을 설정할 수 있습니다. myRDD.persist (StorageLevel.MEMORY_AND_DISK). .cache ()는 .persist (StorageLevel.MEMORY_ONLY)의 줄임말입니다.

    persist에 대한 기본 스토리지 레벨은 실제로 Java 또는 Scala의 RDD에 대한 StorageLevel.MEMORY_ONLY입니다. 그러나 일반적으로 DStream을 작성하는 경우 다릅니다 (DStream 생성자 API 문서 참조). Python을 사용하는 경우 StorageLevel.MEMORY_ONLY_SER입니다.

    이 문서는 여러 저장소 수준과 그 의미를 자세히 설명하지만 기본적으로 Spark를 StorageLevel 클래스를 확장하는 객체를 가리 키도록 구성하는 속기입니다. 따라서 최대 40의 복제 팩터로 자신을 정의 할 수 있습니다.

    사전 정의 된 다양한 스토리지 레벨 중 일부는 단일 RDD 사본을 유지합니다. 사실, 이름에 _2 접미사가 붙지 않은 모든 사람들에게 해당됩니다 (NONE 제외).

    물론 매체 당 하나의 사본입니다. 전체적으로 단일 사본을 원할 경우 단일 중간 스토리지 레벨을 선택해야합니다.

  2. ==============================

    2.huitseeker는 Spark에 RDD를 유지하고 복제를 사용하는 StorageLevel을 지정하도록 특별히 요청하지 않는 한 RDD 파티션의 여러 사본이 없습니다.

    huitseeker는 Spark에 RDD를 유지하고 복제를 사용하는 StorageLevel을 지정하도록 특별히 요청하지 않는 한 RDD 파티션의 여러 사본이 없습니다.

    스파크가하는 것은 노드가 실패 할 때 손실 된 RDD 파티션에 도달하는 데 필요한 관련 데이터의 처리 만 반복하도록 특정 데이터 조각이 계산되는 방식을 계보하는 것입니다. 때때로 작업을 다시 시작한 다음 복구하도록하는 것이 더 빠릅니다.

  3. from https://stackoverflow.com/questions/31624622/is-there-a-way-to-change-the-replication-factor-of-rdds-in-spark by cc-by-sa and MIT license