我知道,运行保存的Athena查询会根据查询的名称和查询的运行日期将结果存储在Amazon S3位置,如下所示:
QueryLocation}/{QueryName|Saved}/{yyyy}/{mm}/{dd}/{QueryID}/
是否可以覆盖它并将其存储在类似于
QueryLocation}/QueryName
每当查询运行时都覆盖结果文件吗?
当然可以通过在S3上重命名(移动+删除)文件来完成,但是想知道是否有更直接的方法。
最佳答案
创建表为选择
将Athena查询结果存储在S3中特定位置的另一种方法是使用CTAS -Query(CREATE TABLE AS SELECT)。
使用此方法有很多优点,因为您甚至可以指定结果格式。压缩JSON,Parquet等...
CREATE TABLE default.my_result_table
WITH
(
format='JSON',
external_location='s3://MY_BUCKET/MY_KEY/...'
) AS
SELECT * FROM MY_SOURCE_TABLE WHERE ....
您甚至可以直接指定要使用的分区(例如
CREATE TABLE default.my_result_table
WITH
(
format='Parquet',
external_location='s3://MY_BUCKET/MY_KEY/...',
partitioned_by = ARRAY['parition_key_1', ...]
) AS
SELECT * FROM MY_SOURCE_TABLE WHERE ....
关于amazon-web-services - 雅典娜查询结果在S3上的特定路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47449163/