Как 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)
Начальная нагрузка
После выполнения запросов в наборе кэшированных данных
Один исполнитель может иметь 2 кэшированных раздела. Также обратите внимание, что RDD несколько раз кэшируется на прикрепленном скриншоте.
Распределение данных на 101 исполнителя