簡體   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