(InternalError) при вызове операции SelectObjectContent в boto3 - PullRequest
0 голосов
/ 20 июня 2019

У меня есть ряд файлов в формате JSON, которые нужно разделить на несколько файлов, чтобы уменьшить их размер.Одна проблема заключается в том, что файлы извлекаются с помощью стороннего инструмента и поступают в виде объекта JSON в одну строку.

Я могу использовать S3 select для обработки небольшого файла (скажем, около 300 МБ без сжатия), но когда я пытаюсьи использовать больший файл - скажем, 1Gb несжатый (сжатый gzip 90Mb) Я получаю следующую ошибку:

[ERROR] EventStreamError: An error occurred (InternalError) when calling the SelectObjectContent operation: We encountered an internal error. Please try again.

Запрос, который я пытаюсь выполнить:

select count(*) as rowcount from s3object[*][*] s

Я могувыполнить запрос из консоли, потому что размер файла превышает 128 МБ, но код, выполняющий операцию, выглядит следующим образом:

def execute_select_query(bucket, key, query):
    """
    Runs a query against an object in S3.
    """
    if key.endswith("gz"):
        compression = "GZIP"
    else:
        compression = "NONE"
    LOGGER.info("Running query |%s| against s3://%s/%s", query, bucket, key)
    return S3_CLIENT.select_object_content(
        Bucket=bucket,
        Key=key,
        ExpressionType='SQL',
        Expression=query,
        InputSerialization={"JSON": {"Type": "DOCUMENT"}, "CompressionType": compression},
        OutputSerialization={'JSON': {}},
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...