AWS Athena - 数据类型的最佳实践

AWS Athena - best practice for data types

我计划在 Amazon S3/Athena 中使用数百 GB 的大型数据集,我有一个关于数据存储最佳实践(成本方面和性能方面)的问题想请教有经验的从业者。

我的行数据集包含大约 40 列,其中包含类似数字、日期和字符串的项目。我的查询将经常进行一些算术运算和分组。

以字符串形式存储所有数据是个好主意吗?这种方法的优缺点是什么? (在查询时引入转换和动态转换数据类型)

还是直接实施转换并以数字格式存储数字、以时间图格式存储日期等更好

我有两个建议给你。

  1. 我想您已经在这样做了,但是使用 Parquet 等柱状格式来存储您的数据。这将允许您的查询为您的查询扫描更少的数据(假设有针对性的查询),这将使它们的性能更高,成本更低,因为 Athena 查询按每 TB 的扫描数据收费。

  2. 在列数据类型方面,我会为数字和日期字段使用适当的数字类型。当将数字表示为字符串时,它在数字本身中每个数字消耗 1 个或更多字节(取决于编码),这在存储数值时效率不高。以数字 203 为例。作为一个字符串,它需要三个字节才能用 UTF-8 对其进行编码(1 个字节用于“2”,1 个字节用于“0”,1 个字节用于“3”)。但是数值将适合单个无符号字节。

通过这两项更改,您应该会看到成本和性能方面的改进。