如何在雅典娜/普雷斯托中限制数组列中的#元素和/或总大小?



我一直在查看Athena和PrestoDB文档,找不到任何关于数组列中元素数量和/或最大总大小限制的参考。 文件将采用镶木地板格式,但如果镶木地板是限制因素,这是可以协商的。

这是已知的吗?

更多背景:

我将把数据推送到消防水带中,该水带会将 Parquet 文件发送到我计划使用 Athena 查询的 S3。 数据是 S3 URI 到一组 ID 的一对多映射,例如

s3://bucket/key_one, 123
s3://bucket/key_one, 456
....
s3://bucket/key_two, 321
s3://bucket/key_two, 654
...

或者,我可以以这种形式存储:

s3://bucket/key_one, [123, 456, ...]
s3://bucket/key_two, [321, 654, ...]

由于 Parquet 是压缩的,我不关心 S3 上文件的大小。 重复的 URI 应由压缩处理。

更值得关注的是,为了插入记录,我需要向Firehose拨打多少次电话。 在第一种情况下,每个(对象,ID)元组都有记录,其中每个对象大约有 6000 个。 有一个"批处理"调用,但每批限制为 500 条记录,所以我最终会进行多次调用。 此代码将在我试图尽可能节省执行时间的 Lambda 函数中执行。

Presto/Athena 端对数组列类型中的元素数量不应有任何明确的限制。最终,它会深入到JVM限制,这将是巨大的。只需确保您有足够的节点内存可用于处理这些字段。如果您可以查看您的用例并避免存储非常大的列值(数组类型),那就太好了

最新更新