Apache spark Databricks结果缓存

Apache spark Databricks结果缓存,apache-spark,databricks,Apache Spark,Databricks,Databricks有结果缓存的概念吗?当我运行SQL查询时,它是将结果集缓存在某个地方以供次秒访问,还是我们只有Delta lake缓存?我在文档中找不到任何东西,在这个阶段我假设它不作为一个特性存在。有人可以澄清吗?在增量缓存中缓存指定的简单选择查询访问的数据。您可以通过提供列名列表来选择要缓存的列的子集,并通过提供谓词来选择行的子集。这使后续查询能够尽可能避免扫描原始文件。此结构仅适用于拼花地板桌子。也支持视图,但扩展查询仅限于简单查询 示例: CACHE SELECT * FROM bo

Databricks有结果缓存的概念吗?当我运行SQL查询时,它是将结果集缓存在某个地方以供次秒访问,还是我们只有Delta lake缓存?我在文档中找不到任何东西,在这个阶段我假设它不作为一个特性存在。有人可以澄清吗?

增量缓存中缓存指定的简单选择查询访问的数据。您可以通过提供列名列表来选择要缓存的列的子集,并通过提供谓词来选择行的子集。这使后续查询能够尽可能避免扫描原始文件。此结构仅适用于拼花地板桌子。也支持视图,但扩展查询仅限于简单查询

示例:

CACHE SELECT * FROM boxes
CACHE SELECT width, length FROM boxes WHERE height=3
参考:有关RDD缓存和DataRicks IO缓存之间的差异,请参阅

增量缓存通过使用快速中间数据格式在节点的本地存储中创建远程文件的副本来加速数据读取。每当必须从远程位置提取文件时,数据都会自动缓存。然后在本地执行相同数据的连续读取,从而显著提高读取速度

Databrick中有两种类型的缓存:

  • 增量缓存

  • apachespark缓存

您可以同时使用增量缓存和Spark缓存。本节概述了它们之间的主要区别,以便您可以为工作流选择最佳工具

存储数据的类型:增量缓存包含远程数据的本地副本。它可以提高各种查询的性能,但不能用于存储任意子查询的结果。Spark缓存可以存储任何子查询数据的结果以及以Parquet以外的格式(如CSV、JSON和ORC)存储的数据

性能:存储在增量缓存中的数据可以比Spark缓存中的数据更快地读取和操作。这是因为增量缓存使用高效的解压缩算法,并以最佳格式输出数据,以便使用整个阶段代码生成进行进一步处理

自动控制与手动控制:启用增量缓存时,必须从远程源提取的数据会自动添加到缓存中。这一过程是完全透明的,不需要采取任何行动。但是,要预先将数据预加载到缓存中,可以使用cache命令(请参见缓存数据的子集)。使用Spark缓存时,必须手动指定要缓存的表和查询

磁盘与基于内存的比较:增量缓存完全存储在本地磁盘上,因此不会从Spark内的其他操作中占用内存。由于现代SSD的高读取速度,增量缓存可以完全驻留在磁盘上,而不会对其性能产生负面影响。相反,Spark缓存使用内存


希望这能有所帮助。

据我所知,这是不可能的,文档中确实提到了清除缓存以提高性能,但与此特定问题无关。我希望这能进一步澄清未来的答案。databricks平台中有一个称为delta cache的概念。您可能需要检查,这与spark cache不同。增量缓存包含远程数据的本地副本。它可以提高各种查询的性能,但不能用于存储任意子查询的结果。请参阅。增量缓存与结果缓存非常不同。使用增量缓存,数据缓存在本地节点上。