gpt4 book ai didi

amazon-web-services - 通过 API 从 Athena Query 返回 JSON

转载 作者:行者123 更新时间:2023-12-02 02:59:05 25 4
gpt4 key购买 nike

我能够使用带有 startQueryExecution() 的 Athena API 在 S3 中创建响应的 CSV 文件。但是,我希望能够将 JSON 响应返回给我的应用程序,以便我可以进一步处理数据。我试图在通过 API 运行 startQueryExecution() 后返回 JSON 结果,如何将结果作为 JSON 响应返回?

我正在使用 AWS PHP SDK [ https://aws.amazon.com/sdk-for-php/] ,但是这与任何语言都相关,因为我找不到任何实际获得响应的答案,它只是将 CSV 文件保存到 S3。

$athena = AWS::createClient('athena');
$queryx = 'SELECT * FROM elb_logs LIMIT 20';

$result = $athena->startQueryExecution([
'QueryExecutionContext' => [
'Database' => 'sampledb',
],
'QueryString' => 'SELECT request_ip FROM elb_logs LIMIT 20', // REQUIRED
'ResultConfiguration' => [ // REQUIRED
'EncryptionConfiguration' => [
'EncryptionOption' => 'SSE_S3' // REQUIRED
],
'OutputLocation' => 's3://xxxxxx/', // REQUIRED
],
]);

// check completion : getQueryExecution()
$exId = $result['QueryExecutionId'];

sleep(6);

$checkExecution = $athena->getQueryExecution([
'QueryExecutionId' => $exId, // REQUIRED
]);


if($checkExecution["QueryExecution"]["Status"]["State"] == 'SUCCEEDED')
{
$dataOutput = $athena->getQueryResults([
'QueryExecutionId' => $result['QueryExecutionId'], // REQUIRED
]);

while (($data = fgetcsv($dataOutput, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}

}

最佳答案

Amazon Athena SDK 将返回查询结果,然后您可以将其编写(发送)为 JSON。 SDK 本身不会为您执行此操作。

API startQueryExecution() 返回 QueryExecutionId。使用它来调用 getQueryExecution() 来确定查询是否完成。查询完成后调用 getQueryResults()。

然后您可以处理结果集中的每一行。

关于amazon-web-services - 通过 API 从 Athena Query 返回 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47568281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com