Зачем AWS Athena нужно «ведро для разлива», когда она выгружает результаты в целевое местоположение S3

Зачем 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;

Поскольку у него уже есть ведро для хранения данных, зачем Афине это ведро для разлива и что оно там хранит?

2 ответа

Разработчик Trino / Presto, который принимал непосредственное участие в разработке Spill.

В Trino (ранее известном как Presto SQL) термин «разлив» относится к сбросу на диск данных, которые не помещаются в память. Это дополнительная функция, позволяющая обрабатывать более крупные запросы. Конечно, если все ваши запросы требуют сброса, более эффективно просто выделить больший кластер с большим объемом памяти, но эта функциональность полезна, когда большие запросы редки.

Разлив включает в себя сохранение временных данных, а не окончательных результатов запроса. Разлитые данные повторно считываются и удаляются до завершения выполнения запроса.

Athena использует функции Lambda для подключения к внешним хранилищам данных Hive. Из-за ограничений на размер ответа функции Lambda ответы, превышающие пороговое значение, попадают в расположение Amazon S3, указанное вами при создании функции Lambda. Афина читает эти ответы напрямую из Amazon S3.

https://docs.aws.amazon.com/athena/latest/ug/connect-to-data-source-hive.html

Другие вопросы по тегам