我想知道我是否将查询显式缓存为
CACHE SELECT * FROM boxes
并且稍后运行另一个查询,如SELECT C1 FROM框,该查询是否能够使用相同的缓存。或者我们需要使用相同的查询结构来使用磁盘缓存。此外,如果我们能够使用磁盘缓存,它是否也有助于降低计算成本?
缓存SELECT *
可能没有太大好处,但您可以将数据的子集/预处理部分缓存到另一个Delta表中。
boxes_df = spark.table("boxes")
smaller_df = boxes_df.filter(boxes_df.price > 20)
smaller_df.write.format("delta").saveAsTable("less_boxes")
然后您可以按如下方式查询子集:
SELECT * FROM less_boxes
这种模式可以根据具体情况降低计算成本。