Impala 大数据的中位数计算

Impala median calculation on big data

我可以访问某些给定月份的数亿行数据。 3个特征:一个字符串代表日期,一个字符串代表一个类型,一个值代表一个数量。

可以访问 python 和 impala(SQL),计算每个月每种类型数百万行的中位数的最佳方法是什么?

如果我使用一个简单的分组依据:日期部分的类型和子字符串来获取月份,例如子字符串(日期,1,4)并使用 APPX_MEDIAN 函数作为中位数,我最终会得到运行 Impala 查询内存不足。

如果我尝试将原始数据保存为 CSV(比如使用 DBeaver),它会很大 - GB 大小,太大而无法放入我有权访问的 VM 的内存中,如果我尝试将其推入 python pandas 数据框。

我不熟悉处理大数据的模式,因此非常感谢任何提示。由于数据量庞大,我很难执行简单的计算。

您可以尝试通过指定 SET MEM_LIMIT=Xg 来增加 Impala 用于执行查询的内存量,其中 X 将以 GB per Impala 为单位的内存]守护进程。有关详细信息,请参阅 https://impala.apache.org/docs/build/html/topics/impala_mem_limit.html