AWS雅典娜:处理大量数字

问题描述 投票:0回答:1

我在S3上有文件,其中两列仅包含可以为10^26的正整数。不幸的是,根据AWS Docs,雅典娜仅支持最高2^63-1(约10^19)范围内的值。因此,目前这些列表示为字符串。

当涉及到过滤时,它并不是什么大问题,因为我可以使用正则表达式。例如,如果我想获取5e^216e^21之间的所有记录,我的查询将类似于:

SELECT *
FROM database.table
WHERE (regexp_like(col_1, '^5[\d]{21}$'))

我大约有[[300M行(镶木地板中大约有12GB),大约需要7秒钟,所以性能上还可以。

但是,有时我想对这两个大列执行一些数学运算,例如从另一个大列中减去一个大列。由于近似误差,无法将这些记录转换为DOUBLE。理想情况下,我想留在雅典娜内。目前,我大约有[[100M行比2^63-1大,但是这个数字将来可能会增加。

解决数字记录超出可用范围的问题的正确方法是什么?另外,您对使用正则表达式进行过滤有何想法?有没有更好/更合适的方法呢?

biginteger presto amazon-athena
1个回答
2
投票
replace

cast

如果您经常去该表,我将其重写为新的数据类型以节省处理时间。

© www.soinside.com 2019 - 2024. All rights reserved.