【发布时间】:2022-11-08 01:07:51
【问题描述】:
我正在使用存储在 S3 存储桶(镶木地板文件)中的数据集,该数据集总共包含 ~165 million 记录(约 30 列)。现在,要求是首先groupby 某个ID 列,然后根据数据为这些分组记录中的每一个生成250+ features。使用多个 Pandas 功能以及 10 多个支持功能来构建这些功能非常复杂。 groupby 函数应该生成~5-6 million records,因此最终输出应该是6M x 250 形状的数据帧。
现在,我在一个较小的样本上测试了代码,它运行良好。问题是,当我在整个数据集上实现它时,它需要很长时间 - Spark 显示中的进度条即使在运行 4 个多小时后也不会改变。我在连接到集群(1 个 m5.xlarge 主节点和 2 个 m5.xlarge 核心节点)的 AWS EMR Notebook 中运行它。
我试过1 m5.4xlarge Master & 2 m5.4xlarge Core Nodes、1 m5.xlarge Master & 8 m5.xlarge Core Nodes 等组合。他们都没有表现出任何进展。
我已经尝试在我的本地机器的内存中的 Pandas 中运行它以获得大约 65 万条记录,进度是大约 3.5 次迭代/秒,达到 ~647 hours 的 ETA。
所以,问题是 - 任何人都可以分享任何更好的解决方案来减少时间消耗并加快处理速度吗?是否应该为此用例使用另一种集群类型?是否应该对其进行重构,或者是否应该删除 Pandas 数据框的使用,或者任何其他指针都会非常有帮助。
提前非常感谢!
【问题讨论】:
标签: python pandas amazon-web-services pyspark bigdata