0

我对关于返回数据和扫描数据的 S3 选择定价感到困惑。如果我想访问 json 文件中某个索引处的某些内容,它是否仍会扫描整个文件并且扫描的数据会计入整个文件大小?假设我对此示例文件使用以下查询:

select * from S3Object[*].place1[*].Houses[*]

{
    "place1": [
        "Houses": [
            {
                "date": "1777-06-30",
                "price": "445000.0"
            },
            {
                "date": "2014-10-31",
                "price": "495000.0"
            }
        ],
        "Apartments": [
            {
                "date": "1777-06-30",
                "price": "445000.0"
            },
            {
                "date": "2014-10-31",
                "price": "495000.0"
            }
        ]
    ]
}


它会对整个文件的扫描数据收费还是会因为我直接访问 Houses 数组而减少?

4

1 回答 1

0

需要完整扫描 JSON 数据以提供输出。这是因为 JSON 文件中没有索引或块范围的概念。(索引指向数据的存储位置,块范围跟踪存储块中数据的最小值/最大值。)

JSON 适用于数据交换,但不是为高效存储而设计的

但是,您可以压缩文件以降低存储成本。这也可能会降低扫描成本(就像 Amazon Athena 的情况一样),但我找不到任何信息来确认 S3 Select 的这一点。

于 2020-12-27T04:30:45.777 回答