Кэш Spark DataFrame продолжает расти - PullRequest
3 голосов
/ 10 апреля 2019

Как spark определяет, сколько раз реплицировать кэшированный раздел?

Уровень хранилища на вкладке хранилища в пользовательском интерфейсе spark говорит «Disk Serialized 1x Replicated», но похоже, что разделы реплицируются на нескольких исполнителей. Мы заметили, что это происходит с DISK_ONLY уровнем хранения с использованием spark 2.3. Мы кэшируем набор данных с 101 partitions (размер на диске 468,4 ГБ). Первоначально данные распределены по 101 исполнителю (всего у нас 600 исполнителей). По мере того, как мы выполняем запросы к этому набору данных, увеличивается размер диска, а также количество данных исполнителей. Мы также заметили, что обычно один блок / раздел реплицируется на нескольких исполнителей на одном узле - если он хранится на диске, почему он не распределяется между исполнителями на одном узле?

persistedDs = dataset.repartition(101).persist(StorageLevel.DISK_ONLY)
  • Начальная нагрузка

    Initial Load

  • После выполнения запросов в наборе кэшированных данных

    enter image description here

  • Один исполнитель может иметь 2 кэшированных раздела. Также обратите внимание, что RDD несколько раз кэшируется на прикрепленном скриншоте.

    enter image description here

  • Распределение данных на 101 исполнителя

    enter image description here

...