python boto3 Как настроить AWS s3select на паркете?

1

Я пытаюсь использовать функцию AWS s3select для запроса файла паркета. Согласно документации, которую она поддерживала, но я пробовал различные конфигурации и не могу заставить ее работать. В каждой из попыток InputSerialization, которые я показывал в комментариях, я перечислил ошибку, которую получаю при попытке этой версии. Может ли кто-нибудь показать мне, как правильно настроить это?

import boto3

S3_BUCKET = 'myBucket'
KEY_LIST = "'0123','6789'"
S3_FILE = 'myFolder/myFile.parquet'

s3 = boto3.client('s3')

r = s3.select_object_content(
        Bucket=S3_BUCKET,
        Key=S3_FILE,
        ExpressionType='SQL',
        Expression="select \"Record\" from s3object s where s.\"Key\" in [" + KEY_LIST + "]",
#        InputSerialization={}, # (MissingRequiredParameter) when calling the SelectObjectContent operation: InputSerialization is required
#        InputSerialization={'CompressionType': { 'NONE' }},    # Invalid type for parameter InputSerialization.CompressionType, value: {'NONE'}, type: <class 'set'>, valid types: <class 'str'>
#        InputSerialization={'Parquet': {}}, # Unknown parameter in InputSerialization: "Parquet", must be one of: CSV, CompressionType, JSON
#        InputSerialization={'CompressionType': { 'Snappy' }},    # Invalid type for parameter InputSerialization.CompressionType, value: {'Snappy'}, type: <class 'set'>, valid types: <class 'str'>

        OutputSerialization={'JSON': {}},
)

for event in r['Payload']:
    if 'Records' in event:
        records = event['Records']['Payload'].decode('utf-8')
        print(records)
Теги:
amazon-web-services
boto3
amazon-s3-select

1 ответ

0

Мне нужно было обновить мою установку boto3 до последней версии. После обновления до версии 1.9.7 эта версия работала:

InputSerialization={'Parquet': {}},

Ещё вопросы

Сообщество Overcoder
Наверх
Меню