在Boto3中调用SelectObjectContent操作时出现(InternalError)

时间:2019-06-19 23:24:37

标签: amazon-s3 boto3

我有一系列使用JSON的文件,需要将这些文件拆分为多个文件以减小其大小。一个问题是文件是使用第三方工具提取的,并作为JSON对象到达一行。

我可以使用S3 select处理一个小文件(例如,未压缩的文件约为300Mb),但是当我尝试使用一个较大的文件时,例如1Gb的未压缩文件(90Mb gzip已压缩),我会收到以下错误消息:

[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

我无法从控制台运行查询,因为文件大于128Mb,但是执行该操作的代码如下:

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': {}},
    )

0 个答案:

没有答案