映射/减少织物

reductio的Python项目详细描述


因为映射和还原并不难。

什么是还原?

reductio是一个针对python的极简的map-reduce框架。它运行在 fabric和setuptools,您可能已经使用它们将代码放到其他 机器。

它没有数据库。它没有分布式文件系统。它不使用其他服务器 比sshd。因此,它基本上没有内存需求!

reductio是为磁盘绑定的大数据任务而设计的,其中许多任务都是这样。如果 你需要映射的部分完全适合你的工人 电脑,你为此付出了巨大的代价。如果他们没有,一个系统 试图在ram中缓冲东西的做法将浪费它所有的精力。在 有一点,你不会再看到你的数据,除非你把它写到该死的磁盘上, 这就是大部分时间要做的。

我创造还原是出于绝对的需要,所以我可以开始计算 数据。您可能会注意到它的文档实际上是不存在的。 时刻。 还原做什么 ———-- 还原延伸结构(http://fabfile.org)。它是为了支持 遵循近似过程:

  • 在所有工作机上设置适当的python环境, 包括必需的包、保存数据的位置和最新的 要运行的代码的版本。
  • 告诉每台工人机器如何联系所有其他机器,这样他们就可以 当他们处理完数据后,再把它们发送出去。
  • 为每台工作机提供一些python函数来运行所有数据。 这些通常是“地图”或“减少”。
  • 使用unix的 极其优化的排序命令。

示例

reducetio/example/fabfile.py是如何计算所有字母的示例 无处不在的“words”文件中的bigrams(相邻字母对),以及 把它们聚合成一个频率表。

运行任务

如果您有一个任务定义为mymodule.py中的函数 首先,要运行安装程序以确保代码和其他内容符合 日期,您可以使用以下命令运行它们:

fab -f mymodule setup do_stuff

为什么不做Hadoop?

面对现实,如果你知道如何配置hadoop并让代码运行它, 你现在就这么做。

另外,hadoop是为java程序员编写的,python显然是 世界上的二等公民。hadoop似乎认为所有的python代码 采取独立脚本的形式,没有依赖关系,这可能是 说明了java程序员对python的看法。

reducetio意识到除非你有 正确的python设置,因此它构建在python程序员已经使用的工具上 部署他们的代码。

为什么不跳迪斯科呢?

我赞成迪斯科项目(http://discoproject.org)及其目标 创建一个围绕python设计的map-reduce生态系统,但我也发现了 复杂和太“神奇”的时刻。

这使得我们很难理解它的内部情况,然而 当出了问题或者你想的时候,你必须了解它的内在 做一些设计师没想到的事情。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
关于如何将spring mvc重构为普通servlet或jetty处理程序的java建议   java循环和处理数据输入错误   使用java获取更改内容   java试图向一个数组中添加5张不同的“卡”,但它正在添加5张相同的卡   Java函数在Matlab类中变得未定义   多线程Java使用对象作为监视器,那个对象不是太重了吗?   将MySQL日期转换为Java日期:Android   java ResourceBundle在哪里。getBundle(“ResourceFile”,新语言环境(“us”,“us”))查找该文件?   java第一人称摄影机卷   如何在java中交替使用两个字符   addActionListener上下文中的java“this”   几天后,java Grails和Jasig CAS重定向循环   JavaAnt如何在javac中使用exclude、excludesfile?   java如何设置单行RecyclerView上的文本?