A consulta em um Spark DataFrame baseada em CSV é mais rápida que em um baseado no Parquet?
Preciso carregar um arquivo CSV do HDFS usando o Spark noDataFrame
. Eu queria saber se há uma melhoria de "desempenho" (velocidade de consulta) de um DataFrame suportado por um arquivo CSV vs um suportado por um arquivo parquet?
Normalmente, carrego um arquivo CSV como o seguinte em um quadro de dados.
val df1 = sqlContext.read
.format("com.databricks.spark.csv")
.option("header", "true")
.option("inferSchema", "true")
.load("hdfs://box/path/to/file.csv")
Por outro lado, carregar um arquivo em parquet (supondo que eu tenha analisado o arquivo CSV, criado um esquema e salvo no HDFS) é semelhante ao seguinte.
val df2 = sqlContext.read.parquet("hdfs://box/path/to/file.parquet")
Agora, estou me perguntando se operações como os seguintes tempos de consulta seriam impactadas e / ou diferentes.
df1.where ("col1 = 'some1'"). count ()df1.where ("col1 = 'some1' e col2 = 'some2'"). count ()Eu estou querendo saber se alguém sabe se existe pushdown de predicado para parquet?
Para mim, parece que o parquet é parecido com um índice invertido, e seria de esperar que filtros simples para contagem fossem mais rápidos para um quadro de dados baseado no parquet do que um no CSV. Quanto ao quadro de dados suportado por CSV, eu imaginaria que uma verificação completa do conjunto de dados teria que ocorrer toda vez que filtrarmos por itens.
Qualquer esclarecimento sobre o desempenho da consulta de quadros de dados suportados por parquet e CSV vs é apreciado. Além disso, qualquer formato de arquivo que ajude a acelerar a contagem de consultas nos quadros de dados também é bem-vindo.