Dav*_*d S 5 python data-processing boto fabric
我是一个具有非常好的RDBMS经验的python开发人员.我需要处理相当大量的数据(大约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这样的新技术或学习一门新语言
谢谢阅读.我期待着任何建议.
我经常使用 SQS/S3/EC2 的组合来进行此类批量工作。在 SQS 中对需要执行的所有工作的消息进行排队(分成一些相当小的块)。启动 N 个 EC2 实例,这些实例被配置为开始从 SQS 读取消息、执行工作并将结果放入 S3,然后且仅在此时从 SQS 中删除消息。
你可以将其扩展到疯狂的水平,它对我来说一直非常有效。就您而言,我不知道您是否会将结果存储在 S3 中或直接转到 PostgreSQL。