2 回答
TA贡献1804条经验 获得超2个赞
2·1您需要使用 CTAS:
CREATE TABLE db.table_name
WITH (
external_location = 's3://yourbucket/path/table_name',
format = 'PARQUET',
parquet_compression = 'GZIP',
partitioned_by = ARRAY['dt']
)
AS
SELECT
...
;
这样选择的结果将保存为 Parquet。
https://docs.aws.amazon.com/athena/latest/ug/ctas-examples.html
https://docs.aws.amazon.com/athena/latest/ug/ctas.html
使用 CTAS 查询:
一步从查询结果创建表,无需重复查询原始数据集。这使得处理原始数据集变得更加容易。
将查询结果转换为其他存储格式,例如 Parquet 和 ORC。这提高了查询性能并降低了 Athena 中的查询成本。有关信息,请参阅列存储格式。
创建仅包含您需要的数据的现有表的副本。
更新(2019.10):
AWS 刚刚为 Athena 发布了 INSERT INTO。
https://docs.aws.amazon.com/en_pv/athena/latest/ug/insert-into.html
基于在源表上运行的 SELECT 查询语句或基于作为语句的一部分提供的一组 VALUES 将新行插入目标表。当源表基于一种格式(如 CSV 或 JSON)的基础数据,而目标表基于另一种格式(如 Parquet 或 ORC)时,您可以使用 INSERT INTO 查询将所选数据转换为目标表的格式.
有一些限制:
分桶表不支持 INSERT INTO。有关更多信息,请参阅分桶与分区。
在对包含在 Amazon S3 中加密的基础数据的表运行 INSERT 查询时,INSERT 查询写入的输出文件默认情况下不会加密。如果您要插入包含加密数据的表,我们建议您加密 INSERT 查询结果。有关使用控制台加密查询结果的更多信息,请参阅加密存储在 Amazon S3 中的查询结果。要使用 AWS CLI 或 Athena API 启用加密,请使用 StartQueryExecution 操作的 EncryptionConfiguration 属性根据您的要求指定 Amazon S3 加密选项。
添加回答
举报