Выполнение Athena Query из кода Python с использованием boto3 показывает ошибку «botocore.errorfactory.InvalidRequestException» - PullRequest
1 голос
/ 08 марта 2019

Я выполняю запрос Athena с использованием библиотеки boto3 согласно приведенному ниже коду:

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

def main():
    queryStart = client.start_query_execution(
        QueryString = 'SELECT * FROM <tablename>',
        QueryExecutionContext = {
            'Database': '<databasename>'
        },
        ResultConfiguration={
        'OutputLocation': 's3://<outputlocation>',
        'EncryptionConfiguration': {
            'EncryptionOption': 'SSE_S3'
        }
     }
    )
    queryExecution = client.get_query_results(QueryExecutionId=queryStart['QueryExecutionId'],MaxResults=10)
    prinnt(queryExecution)

При выполнении этого простого кода я получаю сообщение об ошибке:

  Traceback (most recent call last):
      File "readingathena.py", line 38, in <module>
      main()
      File "readingathena.py", line 33, in main
      for i in response_iterator:
      File "C:\Program Files\Python36\lib\site-packages\botocore\paginate.py", line 255, in __iter__
      response = self._make_request(current_kwargs)
      File "C:\Program Files\Python36\lib\site-packages\botocore\paginate.py", line 332, in _make_request
return self._method(**current_kwargs)
      File "C:\Program Files\Python36\lib\site-packages\botocore\client.py", line 357, in _api_call
      return self._make_api_call(operation_name, kwargs)
      File "C:\Program Files\Python36\lib\site-packages\botocore\client.py", line 661, in _make_api_call
      raise error_class(parsed_response, operation_name)
      botocore.errorfactory.InvalidRequestException: An error occurred (InvalidRequestException) when calling the GetQueryResults operation: Query has not yet finished. Current state: RUNNING

Единственное, чего я хочу добиться, - это напечатать результат на консоли, а не хранить его в хранилище s3.

P.S выход сохраняется в корзине S3, несмотря на ошибку. Но не удалось получить ответ с помощью функции "get_query_results"

1 Ответ

1 голос
/ 08 марта 2019

Невозможно получить результаты запроса, пока запрос не будет завершен, т. Е. Состояние SUCCEEDED.Вы должны использовать API-вызов get_query_execution для опроса состояния, пока оно не станет SUCCEEDED, и только после этого вызовите get_query_results.

К сожалению, нет способа получить результат без него.хранится на S3.Так устроена Афина, и пути к ней нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...