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 需要溢出桶以及它在那里存储什么?
Trino/Presto 开发人员直接参与了 Spill 开发。
在 Trino(以前称为 Presto SQL)中,术语“溢出”是指将无法装入内存的数据转储到磁盘上。这是一项可选功能,允许您处理更大的查询。当然,如果您的所有查询都需要溢出,那么简单地提供具有更多内存的更大集群会更有效,但是当较大的查询很少见时,该功能非常有用。
溢出涉及保存临时数据,而不是最终查询结果。在查询完成执行之前,溢出的数据将被重新读回并删除。