2

我可以访问任何给定月份的数亿行数据。3个特征:字符串表示日期,字符串表示类型,值表示金额。

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

如果我使用简单的 group by :日期部分的类型和子字符串来获取月份,例如 substring(date,1,4) 并使用 APPX_MEDIAN 函数作为中位数,我最终会耗尽 Impala 查询的内存。

如果我尝试将原始数据以 CSV 格式(例如使用 DBeaver),它会非常大 - GB 大小,太大而无法放入我可以访问的 VM 的内存中,如果我尝试推送它,它将保存 CSV进入 python pandas 数据框。

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

4

1 回答 1

1

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

于 2018-08-04T17:03:59.203 回答