Афина запрос Boto3 без сохранения данных в s3 - PullRequest
0 голосов
/ 24 октября 2018

Я пытаюсь использовать boto3 для запуска набора запросов и не хочу сохранять данные в s3.Вместо этого я просто хочу получить результаты и хочу работать с этими результатами.Я пытаюсь сделать следующее

import boto3

client = boto3.client('athena')
response = client.start_query_execution(
        QueryString='''SELECT * FROM mytable limit 10''',
        QueryExecutionContext={
            'Database': 'my_db'
            }.        
        ResultConfiguration={
            'OutputLocation': 's3://outputpath',
            }
        )

print(response)

Но здесь я не хочу давать ResultConfiguration, потому что я не хочу нигде писать результаты.Но если я удаляю параметр ResultConfiguration, я получаю следующую ошибку

botocore.exceptions.ParamValidationError: Parameter validation failed:
Missing required parameter in input: "ResultConfiguration"

Так что кажется, что указание места вывода для s3 для записи является обязательным.Так какой же способ избежать этого и получить результаты только в ответ?

Ответы [ 3 ]

0 голосов
/ 25 октября 2018

Вам все еще нужно предоставить s3 в качестве временного местоположения для Афины, чтобы сохранить данные, хотя вы хотите обрабатывать данные с помощью python.Но вы можете просматривать данные в виде кортежа, используя API пагинации.пожалуйста, обратитесь к примеру здесь .Надеюсь, это поможет

0 голосов
/ 26 октября 2018

Вам нужно будет указывать местоположение временного сегмента S3 при каждом запуске команды start_query_execution.Однако вы можете получить набор результатов (dict), запустив метод 'get_query_results', используя идентификатор запроса.

Ответ (dict) будет выглядеть следующим образом:

{
'UpdateCount': 123,
'ResultSet': {
    'Rows': [
        {
            'Data': [
                {
                    'VarCharValue': 'string'
                },
            ]
        },
    ],
    'ResultSetMetadata': {
        'ColumnInfo': [
            {
                'CatalogName': 'string',
                'SchemaName': 'string',
                'TableName': 'string',
                'Name': 'string',
                'Label': 'string',
                'Type': 'string',
                'Precision': 123,
                'Scale': 123,
                'Nullable': 'NOT_NULL'|'NULLABLE'|'UNKNOWN',
                'CaseSensitive': True|False
            },
        ]
    }
},
'NextToken': 'string'
}

Длядополнительную информацию см. в документации клиента boto3: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/athena.html#Athena.Client.get_query_results

После этого вы можете удалить все файлы в указанном временном интервале S3.

0 голосов
/ 24 октября 2018

Для действия StartQueryExecution действительно требуется выходное местоположение S3.Параметр ResultConfiguration является обязательным.

Альтернативный способ запроса Athena - с использованием драйверов JDBC или ODBC .Возможно, вам следует использовать этот метод, если вы не хотите сохранять результаты в S3.

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