【问题标题】:How to efficiently append new data to table in AWS Athena?如何有效地将新数据附加到 AWS Athena 中的表?
【发布时间】:2018-05-03 22:40:26
【问题描述】:

我在 Athena 中有一个表,它是从存储在 S3 中的 csv 文件创建的,我正在使用 Lambda 来查询它。但是我有传入的数据正在由 lambda 函数处理,并且想在 Athena 中的现有表中追加一个新行。我怎样才能做到这一点?因为我在文档中看到 Athena 禁止了一些 SQL 语句,例如 INSERT INTOCREATE TABLE AS SELECT

【问题讨论】:

    标签: sql amazon-web-services amazon-s3 aws-lambda amazon-athena


    【解决方案1】:

    如果您要添加新数据,您可以将新数据文件保存到表正在读取的同一文件夹(前缀/键)中。 Athena 会读取该文件夹中的所有文件,新文件的格式只需与现有文件的格式相同即可。

    【讨论】:

    • 正确!澄清一下:雅典娜是只读的。因此,您需要按照 Athena 正在阅读的速度更新数据。
    • @JohnRotenstein 我是否必须在 Athena 中运行查询以重新创建新表,或者 Athena 是否能够检测到数据文件不同并自动创建新表?
    • Athena 实际上会查找指定 PATH 中的所有文件。任何新文件和任何更新的文件都将自动包含在内。它不需要检测文件是否不同——它只是读取运行查询时存在的任何文件。
    • @JohnRotenstein 因此,如果我想从 lambda 函数追加新数据,那么我必须从 S3 下载文件,添加新数据,然后以与原始文件相同的名称上传回 S3?还是我缺少什么?因为对于大型数据集来说似乎会很慢
    • 不,只需在您在 Athena CREATE TABLE 命令中指定的位置(目录)中添加一个新文件。 Athena 会并行读取多个文件,因此它实际上比处理一个更大的文件更有效地处理多个文件。
    猜你喜欢
    • 2015-10-01
    • 2013-11-28
    • 2021-11-14
    • 1970-01-01
    • 2015-09-28
    • 2015-12-21
    • 2018-11-30
    • 2012-07-23
    • 1970-01-01
    相关资源
    最近更新 更多