Как сделать запрос в AWS Athena, подключенном через S3, используя лямбда-функции в python - PullRequest
0 голосов
/ 11 мая 2018

Мои файлы .csv сохранены в S3 Bucket. Я могу запросить данные S3 с помощью AWS Athena. Есть ли способ, которым мы можем подключить лямбда-функцию к Афине и запросить данные из лямбда-функции. пожалуйста помогите

Спасибо

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Как сказал Крис Поллард, вы можете использовать boto3 для запроса Athena из функции Lambda.

http://boto3.readthedocs.io/en/latest/reference/services/athena.html

Для инициализации клиента Athena:

import boto3 client = boto3.client('athena')

Затем вы выполните ваш запрос:

queryStart = client.start_query_execution( QueryString = 'SELECT * FROM myTable', QueryExecutionContext = { 'Database': 'myDatabase' } )

Если вы хотите получить результаты в Lambda (возможно, с использованием второй функции, из-за временных ограничений - см. документы - также обратите внимание, что вы платите за 100 мс времени выполнения), вы должны использовать get_query_execution Чтобы определить статус запроса:

queryExecution = client.get_query_execution(queryStart.QueryExecutionId)

Вам нужно будет проанализировать возвращаемый объект на предмет значения поля QueryExecution.Status.State. Продолжайте обновлять объект, используя get_query_execution(), пока не получите результат Succeeded.

Затем вы можете использовать get_query_results(), чтобы получить результаты для обработки:

results = client.get_query_results(queryStart.QueryExecutionId)

0 голосов
/ 11 мая 2018

Да!Вы можете использовать boto3 для взаимодействия с Афиной.

В частности, вам, вероятно, понадобится метод start_query_execution.

http://boto3.readthedocs.io/en/latest/reference/services/athena.html#Athena.Client.start_query_execution

...