我为我们的数据做了ETL,并在雅典娜做了简单的聚合。我们的计划是使用我们的BI工具从雅典娜那里访问这些表。它现在起作用了,但我担心这些表是静态的,也就是说,自从我上次创建雅典娜表以来,它们只反映数据。当被调用时,雅典娜表是否再次自动运行?如果不是,如何使它们在我们的BI工具调用时自动更新?
到目前为止,我唯一的覆盖表的解决方案是运行两个不同的查询:一个查询删除表,另一个查询重新创建表。因为这是两个不同的查询,我不确定你是否能同时运行(至少在雅典娜,你不能一蹴而就)。
发布于 2022-10-27 04:25:55
Amazon是查询引擎,而不是数据库。
当查询发送到Athena时,它会查看存储在表的DDL中的location。然后雅典娜进入指定的亚马逊S3位置,并扫描文件以获取所请求的数据。
因此,每个雅典娜查询总是反映底层亚马逊S3对象中显示的数据:
没有必要“删除表,然后重新创建表”。表将始终反映存储在亚马逊S3中的当前数据。事实上,该表实际上并不存在--而是简单地定义了表应该包含什么以及在哪里可以在S3中找到数据。
雅典娜最好的用例是查询存储在S3中的大量很少访问的数据。如果数据经常被访问和更新,那么传统的数据库或数据仓库(如Amazon )将更合适。
将商业智能工具指向雅典娜是可以接受的,但是您需要有适当的过程来更新亚马逊S3中的底层数据。
我还建议将数据存储在Snappy压缩的Parquet文件中,这将使雅典娜查询速度更快、成本更低(因为它是根据从磁盘读取的数据量收费的)。
https://stackoverflow.com/questions/74215667
复制相似问题