繁体   English   中英

从 AWS Lambda 到 Athena 的同步调用

[英]Synchronous call from AWS Lambda to Athena

我希望使用 AWS Lambda 中的 Athena 查询我的 S3 存储桶中的数据。 当我查看一些示例时,从 Lambda 到 Athena 的调用似乎是异步的。 Lambda 调用 Athena 并等待 Athena 将结果写入 S3 存储桶。 有没有办法直接检索响应而不必将其写入 S3 存储桶?

那没有。 Athena将始终将结果写入S3(即使使用JDBC驱动程序使用的新的半私有“流”API)。 了解Athena查询何时完成的唯一方法是使用GetQueryExecution API调用进行轮询。 即使看似同步的API(如JDBC驱动程序)也会在内部使用此方法。

但是,不需要从S3读取响应,还有GetQueryResults API调用,它返回结果以及类型信息。 如果响应中的行数少于1000行,或者性能不是最高优先级,则检索结果比从S3读取CSV文件更好。

如果您正在使用Lambda的Athena,我的建议是查看Step Functions。 除非您的Athena查询从不运行超过几秒钟,否则您可以通过构建执行查询的简单状态机来节省大量资金。 您可以在作业轮询示例项目中找到一个好的蓝图。

AwsWrangler 提供了一个同步接口,用于检索 athena 结果并在 memory 中返回。 它为此使用了几种不同的策略,具体取决于选择的选项。

https://aws-sdk-pandas.readthedocs.io/en/stable/tutorials/006%20-%20Amazon%20Athena.html

pip install awswrangler

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM