¿La consulta contra un Spark DataFrame basado en CSV es más rápida que una basada en Parquet?

Tengo que cargar un archivo CSV de HDFS usando Spark enDataFrame. Me preguntaba si hay una mejora en el "rendimiento" (velocidad de consulta) de un DataFrame respaldado por un archivo CSV frente a uno respaldado por un archivo de parquet.

Por lo general, cargo un archivo CSV como el siguiente en un marco de datos.

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

Por otro lado, cargar un archivo de parquet (suponiendo que haya analizado el archivo CSV, creado un esquema y guardado en HDFS) tiene el siguiente aspecto.

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

Ahora me pregunto si las operaciones como los siguientes tiempos de consulta se verían afectados y / o diferentes.

df1.where ("col1 = 'some1'"). count ()df1.where ("col1 = 'some1' y col2 = 'some2'"). count ()

Me pregunto si alguien sabe si hay un empuje de predicados para el parquet.

Para mí, parece que el parquet es algo así como un índice invertido, y se esperaría que los filtros simples para contar sean más rápidos para un marco de datos basado en parquet que uno en CSV. En cuanto al marco de datos respaldado por CSV, me imagino que tendría que ocurrir una exploración completa del conjunto de datos cada vez que filtremos por elementos.

Se agradece cualquier aclaración sobre el rendimiento de la consulta de marcos de datos con respaldo de parquet vs CSV. Además, cualquier formato de archivo que ayude a acelerar el conteo de consultas en marcos de datos también es bienvenido.

Respuestas a la pregunta(1)

Su respuesta a la pregunta