Является ли запрос к Spark DataFrame на основе CSV быстрее, чем к Parquet?

Я должен загрузить файл CSV из HDFS с помощью Spark вDataFrame, Мне было интересно, есть ли улучшение "производительности" (скорость запросов) от DataFrame, поддерживаемого CSV-файлом, по сравнению с тем, который поддерживается паркетным файлом?

Как правило, я загружаю файл CSV, как показано ниже, во фрейм данных.

val df1 = sqlContext.read
 .format("com.databricks.spark.csv")
 .option("header", "true")
 .option("inferSchema", "true")
 .load("hdfs://box/path/to/file.csv")

С другой стороны, загрузка файла паркета (при условии, что я проанализировал CSV-файл, создал схему и сохранил ее в HDFS), выглядит следующим образом.

val df2 = sqlContext.read.parquet("hdfs://box/path/to/file.parquet")

Теперь мне интересно, будут ли такие операции, как следующие времена запроса, влиять и / или отличаться.

df1.where ( "COL1 = 'some1'"). Count ()df1.where ("col1 = 'some1' и col2 = 'some2'"). count ()

Мне интересно, если кто-нибудь знает, есть ли предикат-пуш-ап для паркета?

Мне кажется, что паркет чем-то напоминает инвертированный индекс, и можно ожидать, что простые фильтры для подсчета будут быстрее для фрейма данных на основе паркета, чем для CSV. Что касается фрейма данных с поддержкой CSV, я бы предположил, что полное сканирование набора данных должно происходить каждый раз, когда мы фильтруем элементы.

Любые разъяснения по производительности запроса CSV против паркетных кадров данных приветствуются. Также приветствуется любой формат файла, который поможет ускорить подсчет запросов во фреймах данных.

Ответы на вопрос(1)

Ваш ответ на вопрос