sib*_*ane 9 amazon-s3 amazon-web-services amazon-athena
我知道运行已保存的 Athena 查询会根据查询名称和查询运行日期将结果存储在 Amazon S3 位置,如下所示:
QueryLocation}/{QueryName|Saved}/{yyyy}/{mm}/{dd}/{QueryID}/
是否可以覆盖它并将其存储在类似于
查询位置}/查询名称
每当运行查询时覆盖结果文件?
当然可以通过在 S3 上重命名(移动 + 删除)文件来完成,但想知道是否有更直接的方法。
在 S3 中的特定位置存储 Athena 查询结果的另一种方法是使用CTAS -Query ( CREATE TABLE AS SELECT )。
使用它有很多好处,因为您甚至可以指定结果格式。Gzip 压缩的 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 ....
Run Code Online (Sandbox Code Playgroud)
您甚至可以直接指定要使用的分区(例如
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 ....
Run Code Online (Sandbox Code Playgroud)
好问题,
如果您从 Web 控制台运行查询,则可以设置QueryLocation
但是,要做的就是在您指定的“文件夹”中创建一系列格式为 {QueryName}/{yyyy}/{mm}/{dd}/{QueryID}/ 的标记。
| 归档时间: |
|
| 查看次数: |
11653 次 |
| 最近记录: |