gpt4 book ai didi

amazon-web-services - 将 athena 表作为一个可读文件导出到 S3

转载 作者:行者123 更新时间:2023-12-04 00:25:23 25 4
gpt4 key购买 nike

我很困惑:我不知道如何导出成功运行 CREATE TABLE语句到单个 CSV。

该查询将我的 Create Table 命令的结果“保存”在一个适当命名的 S3 存储桶中,该存储桶被划分为 60 个 (!) 文件。唉,这些文件不是可读的文本文件

CREATE TABLE targetsmart_idl_data_pa_mi_deduped_maid AS 
SELECT *
FROM targetsmart_idl_data_pa_mi_deduped_aaid
UNION ALL
SELECT *
FROM targetsmart_idl_data_pa_mi_deduped_idfa

如何将此表作为单个文件、CSV 格式保存到 S3,而无需下载和重新上传?

最佳答案

如果你想要 CTAS query 的结果语句被写入单个文件,那么您需要使用 分桶 通过结果表中的列之一。为了获得 csv 格式的结果文件,您需要指定表的 格式字段分隔符 特性。

CREATE TABLE targetsmart_idl_data_pa_mi_deduped_maid 
WITH (
format = 'TEXTFILE',
field_delimiter = ',',
external_location = 's3://my_athena_results/ctas_query_result_bucketed/',
bucketed_by = ARRAY['__SOME_COLUMN__'],
bucket_count = 1)
AS (
SELECT *
FROM targetsmart_idl_data_pa_mi_deduped_aaid
UNION ALL
SELECT *
FROM targetsmart_idl_data_pa_mi_deduped_idfa
);

Athena 是一个分布式系统,它将通过一些不可观察的机制扩展查询的执行。请注意,即使明确指定存储桶大小为 1,仍可能会获得多个文件 [1] .

Athena documentation有关其语法以及可以在 WITH 中指定的内容的更多信息指示。另外,不要忘记
considerations and limitations用于 CTAS 查询,例如 external_location用于在 Amazon S3 中存储 CTAS 查询结果必须为空等。

更新 2019-08-13
  • 显然,CTAS 的结果语句用 GZIP 压缩默认算法。我在文档中找不到如何改变这种行为。因此,您只需要在本地下载后解压缩即可。 注意:未压缩的文件不会有 .csv文件扩展名,但您仍然可以使用文本编辑器打开它们。

  • 更新 2019-08-14
  • 如果将列名保存在 csv 中,您将无法在文件中保留列名。格式。相反,它们将与有关新创建的表的其他信息一起在 AWS Glue 元数据目录中指定。
  • 如果您想在执行 CTAS 后保留输出文件中的列名查询,那么您应该考虑固有地这样做的文件格式,例如JSON、Parquet 等。你可以使用 format 来做到这一点。内房产WITH条款。文件格式的选择实际上取决于用例和数据大小。如果您的文件相对较小,并且您希望下载并能够几乎从任何地方读取其内容,请使用 JSON。如果文件很大并且您打算将它们保留在 S3 上并使用 Athena 进行查询,那么请使用 Parquet。
  • 关于amazon-web-services - 将 athena 表作为一个可读文件导出到 S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57456203/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com