Я написал скрипт, который выполнял бы запрос в Афине и загружал файл результатов в указанном месте aws boto S3.
import boto3
def run_query(query, database, s3_output):
client = boto3.client('athena', region_name='my-region')
response = client.start_query_execution(
QueryString=query,
QueryExecutionContext={
'Database': database
},
ResultConfiguration={
'OutputLocation': s3_output,
}
)
print('Execution ID: ' + response['QueryExecutionId'])
return response
query = """select ..."""
database = 'db_name'
path_template = 's3://bucket_name/path/version={}'
current_time = str(datetime.datetime.now())
result = run_query(query, database, path_template.format(current_time))
Это работает, но проблема в том, что у меня есть файл csv какуказанное место. Но мне не нужен CSV-файл. Мне нужен паркетный файл.
Единственный способ получить то, что я хочу, - это загрузить файл, преобразовать его с помощью panda в паркет, чтобы выгрузить его. Раздражает, что я не могу просто конвертировать напрямую без загрузки файла.
Кто-нибудь может предложить другой способ? Я не хочу использовать CTAS.