gpt4 book ai didi

python - 并行处理大量数据

转载 作者:太空狗 更新时间:2023-10-30 00:45:53 24 4
gpt4 key购买 nike

我是一名 Python 开发人员,具有相当不错的 RDBMS 经验。我需要处理相当大量的数据(大约 500GB)。数据位于 s3 存储桶中的大约 1200 个 csv 文件中。我用 Python 编写了一个脚本,可以在服务器上运行它。但是,它太慢了。根据目前的速度和数据量,完成所有文件大约需要 50 天(当然,截止日期早于此)。

注意:处理是您的基本 ETL 类型的东西 - 没什么可怕的。我可以轻松地将它泵入 PostgreSQL 中的临时模式,然后在其上运行脚本。但是,再一次,从我的初始测试来看,这会减慢速度。

注意:一个全新的 PostgreSQL 9.1 数据库将是它的最终目的地。

因此,我正在考虑尝试启动一堆 EC2 实例以尝试分批(并行)运行它们。但是,我以前从未做过这样的事情,所以我一直在四处寻找想法等。

同样,我是一名 Python 开发人员,所以 Fabric + boto 似乎很有前途。我不时使用过 boto,但从未使用过 Fabric。

我从阅读/研究中知道这对 Hadoop 来说可能是一份很棒的工作,但我不知道,也负担不起聘请它完成,而且时间线不允许学习曲线或雇用某人.我也不应该,这是一种一次性交易。所以,我不需要构建一个非常优雅的解决方案。我只需要让它正常工作,并能够在年底前处理所有数据。

此外,我知道这不是一个简单的 stackoverflow 类问题(类似于“如何在 python 中反转列表”)。但是,我希望有人读到这篇文章并“说,我做了类似的事情并使用 XYZ……太棒了!”

我想我想问的是有没有人知道我可以用来完成这项任务的任何东西(假设我是一名 Python 开发人员并且我不知道 Hadoop 或 Java - 并且有一个紧阻止我学习 Hadoop 等新技术或学习新语言的时间表)

感谢阅读。我期待任何建议。

最佳答案

您是否进行了一些性能测量:瓶颈在哪里?它是 CPU 绑定(bind)、IO 绑定(bind)还是 DB 绑定(bind)?

当它是 CPU 绑定(bind)时,你可以尝试像 pypy 这样的 python JIT。

当它受 IO 限制时,您需要更多 HD(并在其上放置一些 strip 化 md)。

当是DB bound时,可以先尝试drop掉所有的index和key。

上周我将 Openstreetmap 数据库导入到我服务器上的一个 postgres 实例中。输入数据约为450G。预处理(这里是在 JAVA 中完成的)只是创建了可以使用 postgres 的“复制”命令导入的原始数据文件。导入 key 和索引后生成。

导入所有原始数据大约需要一天时间 - 然后需要几天时间来构建 key 和索引。

关于python - 并行处理大量数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14006363/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com