Presto 有多个连接器。虽然连接器确实实现了读取和写入操作,但从我阅读的所有教程来看,它们似乎通常用作仅读取的数据源。例如,netflix在 Amazon S3 上有“10 PB”的数据,他们明确声明 Presto 工作节点上没有使用磁盘(也没有 HDFS)。所述用例是“临时交互式”查询。
此外,Amazon Athena 本质上是 S3+Presto,并带有类似的用例。
我很困惑这如何在实践中起作用。显然,您不想在每个查询中读取 10 PB 的数据。所以我假设,您希望将一些以前获取的数据保留在内存中,例如数据库索引。但是,由于对数据和查询没有限制,我无法理解这如何有效。
用例 1:我经常运行相同的查询,例如在仪表板上显示指标。Presto 是否避免重新扫描已经“已知”的数据点?
用例 2:我正在分析一个大型数据集。每个查询都略有不同,但是有公共子查询或者我们过滤到数据的公共子集。Presto 是否从以前的查询中学习并结转中间结果?
或者,如果不是这种情况,是否建议我将中间结果存储在某处(例如 CREATE TABLE AS ...)?