如何在AWS Athena中高效地向表中添加新数据?

4

我在Athena中有一张表,它是从存储在S3中的csv文件创建的,并且我正在使用Lambda查询它。但是,在lambda函数中处理传入的数据时,我想将新行附加到Athena中现有的表中。我应该怎么做呢?因为我在文档中看到Athena禁止一些SQL语句,如 INSERT INTOCREATE TABLE AS SELECT

1个回答

9

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


1
正确!为了澄清:Athena是只读的。因此,您需要在Athena正在读取的地方更新数据。 - John Rotenstein
@JohnRotenstein 我需要在 Athena 中运行查询来重新创建一个新表,还是 Athena 能够检测到数据文件的不同并自动创建新表? - CrashingWater
1
Athena实际上会查找指定路径下的所有文件。任何新文件和任何更新的文件都将自动包含在内。它不需要检测文件是否不同 - 它只是读取查询运行时存在的任何文件。 - John Rotenstein
@JohnRotenstein 所以,如果我想要从 lambda 函数追加新数据,那么我需要从 S3 下载文件,添加新数据,然后用与原始文件相同的名称上传回 S3?或者是我漏掉了什么?因为对于大型数据集,这似乎会很慢。 - CrashingWater
1
不需要,只需在 Athena 的 CREATE TABLE 命令中指定的位置(目录)中添加一个新文件即可。Athena 可以并行读取多个文件,因此对于许多文件而言,它实际上比一个较大的文件更有效率。 - John Rotenstein
与此行为相关的文档在哪里? - thleo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接