嗨,我正在使用lambda python查询雅典娜。我可以在雅典娜控制台中查询。下面是我的代码。
import json
import boto3
client = boto3.client('athena')
def lambda_handler(event, context):
query_1 = "SELECT * FROM testtbl"
database = "testathena"
s3_output = "s3://somepath/somefolder/"
client = boto3.client('athena')
queryStart = client.start_query_execution(QueryString = query_1,
QueryExecutionContext={
'Database': database
},
ResultConfiguration={
'OutputLocation': s3_output
}
)
query_execution_id = queryStart['QueryExecutionId']
print(query_execution_id)
以上代码显示
Response:
null
Request ID:
"271d19af-1ac9-446f-b631-f8a0c551bf5c"
Function Logs:
START RequestId: 271d19af-1ac9-446f-b631-f8a0c551bf5c Version: $LATEST
c36222f1-f31b-4f32-8384-fdeddadd68ba
END RequestId: 271d19af-1ac9-446f-b631-f8a0c551bf5c
REPORT RequestId: 271d19af-1ac9-446f-b631-f8a0c551bf5c Duration: 559.86 ms Billed Duration: 600 ms Memory Size: 128 MB Max Memory Used: 77 MB Init Duration: 335.55 ms
当我使用athena控制台查询时,它会显示所有结果。
emp_id
1 101
2 102
有人可以帮我找出问题吗?任何帮助,将不胜感激。谢谢
答案 0 :(得分:0)
如果要获取查询执行的结果,则需要通过boto3
API(使用queryStart['QueryExecutionId']
作为输入)使用雅典娜客户端的get_query_results
方法。从AWS文档中可以看到,您需要解析响应字典。
请注意,在执行此操作之前,您需要确保查询执行已在状态SUCCESS
下完成。基本上,您需要在while循环中使用get_query_execution
直到
response['QueryExecution']['Status']['State']
输出“成功”,“失败”或“取消”之一。