查询雅典娜时无法在 lambda 中返回结果
Unable to get result back in lambda when querying athena
您好,我正在使用 lambda python 来查询 athena。我可以在雅典娜控制台中查询。下面是我的代码。
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
有人可以帮我找出问题所在吗?任何帮助,将不胜感激。谢谢
如果你想得到查询执行的结果,你需要通过 boto3
API 使用雅典娜客户端的 get_query_results
方法,它以 queryStart['QueryExecutionId']
作为输入.正如您从 AWS 文档中看到的那样,您需要解析响应字典。
请注意,在执行此操作之前,您需要确保查询执行已完成,状态为 SUCCESS
。基本上,您需要在 while 循环中使用 get_query_execution
直到
response['QueryExecution']['Status']['State']
输出'SUCCEEDED''FAILED'或'CANCELLED'之一。
您好,我正在使用 lambda python 来查询 athena。我可以在雅典娜控制台中查询。下面是我的代码。
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
有人可以帮我找出问题所在吗?任何帮助,将不胜感激。谢谢
如果你想得到查询执行的结果,你需要通过 boto3
API 使用雅典娜客户端的 get_query_results
方法,它以 queryStart['QueryExecutionId']
作为输入.正如您从 AWS 文档中看到的那样,您需要解析响应字典。
请注意,在执行此操作之前,您需要确保查询执行已完成,状态为 SUCCESS
。基本上,您需要在 while 循环中使用 get_query_execution
直到
response['QueryExecution']['Status']['State']
输出'SUCCEEDED''FAILED'或'CANCELLED'之一。