Вы говорите о сокращении разделов. Да, спарк поддерживает, что спарк автоматически пропускает чтение больших данных, когда заданы фильтры секций.
Возможно сокращение секций, когда данные в таблице разбиты на несколько логических секций. Каждый раздел соответствует определенному значению столбца раздела и хранится в виде подкаталога в корневом каталоге таблицы в HDFS. Там, где это применимо, запрашиваются только необходимые разделы (подкаталоги) таблицы, что позволяет избежать ненужного ввода-вывода
. После разбиения данных в последующих запросах может быть пропущено большое количество операций ввода-вывода, если в столбце раздела есть ссылкипредикаты. Например, следующий запрос автоматически находит и загружает файл в peoplePartitioned / age = 20 / и опускает все остальные:
Например, следующий запрос автоматически находит и загружает файл в peoplePartitioned / age = 20 / и пропускаетвсе остальные:
val peoplePartitioned = spark.read.format("orc").load("peoplePartitioned")
peoplePartitioned.createOrReplaceTempView("peoplePartitioned")
spark.sql("SELECT * FROM peoplePartitioned WHERE age = 20")
предоставляется более подробная информация здесь
Это также можно увидеть в логическом плане, если вы выполните объяснение (True) в своем запросе:
spark.sql("SELECT * FROM peoplePartitioned WHERE age = 20").explain(True)
он покажет, какие разделы читаются искрой