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