Количество разделов, полученных при чтении данных, хранящихся в виде паркета, соответствует многим из тех же правил, что и чтение разделенного текста:
- Если SparkContext.minPartitions> = количество разделов в данных, SparkContext.minPartitions будетвозвращено.
- Если в данных учитывается количество разделов> = SparkContext.parallelism, SparkContext.parallelism будет возвращен, хотя в некоторых очень небольших случаях разделов может быть # 3.
- Наконец, есликоличество разделов в данных находится где-то между SparkContext.minPartitions и SparkContext.parallelism, обычно вы видите разделы, отраженные в разбиении набора данных.
Обратите внимание, что файл разделенного паркета редко имеет полныйлокальность данных для раздела, что означает, что , даже если количество разделов в данных соответствует количеству прочитанных разделов , существует большая вероятность того, что набор данных должен быть перераспределен в памяти, если вы пытаетесь получить данные разделаместность для выполненияАнс.
Учитывая вышеописанный вариант использования, я бы рекомендовал немедленно перераспределить столбец «ДАТА», если вы планируете использовать локальные операции над разделами на этой основе.Приведенные выше предостережения относительно настроек minPartitions и параллелизма применимы и здесь.
val df = spark.read.parquet("/path/to/parquet/file")
df.repartition(col("DATE"))