首页 > 解决方案 > 从 AWS S3 Select 获取单个记录时获取 OverMaxRecordSize?

问题描述

当我尝试使用selectObjectContent函数从 AWS S3 获取任何特定记录时,我收到错误OverMaxRecordSize: The character number in one record is more than our max threshold, maxCharsPerRecord: 1,048,576 。

如果我正在获取 10 条记录,它的工作但如果试图获取其中一条,那么它就会抛出错误。

正如我在 AWS 文档中看到的错误原因是“输入或结果中的记录长度大于 1 MB 的 maxCharsPerRecord”。

请提出任何解决方案或解决方法,因为我的数据是位置数据,其大小可能超过 1 MB。

例如:

工作:select * from s3object s limit 10;

不工作:select * from s3object s where id = '22'

我的参数是:

const params = {
      Key: 'locationdata2020.csv.gz',
      ExpressionType: 'SQL',
      Expression: `select * from s3object  s where id = '22';`,
      InputSerialization: {
        CSV: {
          FileHeaderInfo: 'USE',
          RecordDelimiter: '\n',
          FieldDelimiter: ','
        },
        CompressionType: 'GZIP'
      },
      OutputSerialization: {
        JSON: {
          RecordDelimiter: ','
        }

      }
    };

标签: node.jsamazon-s3amazon-s3-select

解决方案


不幸的是,这是 AWS 解决方案的限制。我们遇到了类似的问题,最终首先对数据进行批处理,并将一些聚合存储到另一个存储桶中,然后我们使用SelectObjectContent.


推荐阅读