在Spark中读取Parquet文件时避免反序列化成本

时间:2017-02-16 10:15:03

标签: apache-spark avro parquet

我们正在使用Parquet,Avro和Spark进行分析。

我们的查询时间大约有40-50%用于反序列化数据。这是Parquet-Avro互动(AvroRecordMaterializer)构建Avro的GenericRecords。我们通过使用带有虚拟记录物理化器的自定义ReadSupport类来确定这一点(它对传递给它的数据没有任何作用)。

我们在优化这一领域有哪些选择?我们可以远离Avro,但是使用protobufs我们观察到可比的开销。其他人如何克服反序列化开销?

此外,似乎即使谓词下推(Filter2 API)与某些行不匹配,我们仍然会看到基于元数据检查未排除行组的情况的开销。当Parquet谓词不匹配时,我们如何避免整个记录反序列化?

谢谢!

0 个答案:

没有答案