为什么 AWS Athena 在将结果转储到目标 S3 位置时需要“溢出桶”

use*_*280 5 sql amazon-web-services amazon-athena trino

为什么 AWS Athena 在将结果转储到目标 S3 位置时需要“溢出桶”

WITH
( format = 'Parquet', 
parquet_compression = 'SNAPPY', 
external_location = '**s3://target_bucket_name/my_data**' 
) 
AS
WITH my_data_2 
AS 
    (SELECT * FROM existing_tablegenerated_data" limit 10)
SELECT *
FROM my_data_2;
Run Code Online (Sandbox Code Playgroud)

既然它已经有了存储数据的桶,为什么 Athena 需要溢出桶以及它在那里存储什么?

Pio*_*sen 8

Trino/Presto 开发人员直接参与了 Spill 开发。

在 Trino(以前称为 Presto SQL)中,术语“溢出”是指将无法装入内存的数据转储到磁盘上。这是一项可选功能,允许您处理更大的查询。当然,如果您的所有查询都需要溢出,那么简单地提供具有更多内存的更大集群会更有效,但是当较大的查询很少见时,该功能非常有用。

溢出涉及保存临时数据,而不是最终查询结果。在查询完成执行之前,溢出的数据将被重新读回并删除。