使用Amazon S3 Select查询大型JSON对象时数据被截断的问题
问题:S3 Select查询大型JSON时结果被截断
JSON文档结构
存储在S3中的JSON文档结构如下(包含其他未展示字段),其中commits数组元素可达数千个:
{ "result": { "id": "123", "commits": ["comm1", "comm2", ..., "commN"] } }
执行的S3 Select查询命令
aws s3api select-object-content \ --bucket my-bucket --key "path/result.json.gz" \ --expression "select res.id, res.commits from S3Object[*].result res" \ --expression-type 'SQL' \ --input-serialization '{"JSON": {"Type": "DOCUMENT"}, "CompressionType": "GZIP"}' \ --output-serialization '{"JSON": {}}' /dev/stdout | jq
问题现象
执行上述命令后,仅返回约20条commits记录,与预期的数千条不符。该对象采用gzip压缩,压缩后大小约4MB,解压后为69MB。
对S3 Select限制的疑惑
根据S3官方文档中的限制说明:
输入或结果中记录的最大长度为1 MB。
但存在以下困惑:
- 未收到任何错误提示,仅数据被随机截断;查询其他字段时同样会出现截断,只是截断的元素数量不同。
- 有用户反馈超出该限制时会收到“OverMaxRecordSize”错误,但自身执行查询时并未触发该错误。
无效的AI生成解决方案
咨询ChatGPT得到的解决方案中提及--payload、MaxPayloadInBytes或aws s3 select等内容,但这些参数或命令并未在官方文档中存在,属于AI幻觉内容,无法解决问题。
内容的提问来源于stack exchange,提问作者Juraj Martinka
相关产品推荐
相关产品推荐

