在保留分区的同时缓存数据帧

时间:2018-04-12 13:39:13

标签: apache-spark

我在Spark 2.2.0上,在EMR上运行。

我有一个大数据帧df(压缩的snappy文件中大约40G),它由键k1k2分区。

当我通过k1 === v1或(k1 === v1&& k2 === v2`查询时,我可以看到它只查询分区中的文件(大约2%的文件)。

但是,如果我缓存持久 df,那么这些查询突然会点击所有分区并爆炸内存或性能要差得多。

这是一个很大的惊喜 - 有没有办法进行缓存,保留分区信息

1 个答案:

答案 0 :(得分:4)

这是可以预料的。用于缓存的Spark内部列式格式是输入格式不可知的。一旦你加载了数据,就没有与原始输入的连接消失。

这里的例外是新的数据源API [SPARK-22389][SQL] data source v2 partitioning reporting interface,它允许持久化分区信息,但它在2.3中是新的,仍然是实验性的。