用于构建mapreduce作业原型的python库

mockr的Python项目详细描述


Documentation Status

模拟机

mockr是一个python库,用于在教育环境中编写mapreduce作业。它的用途是 概念教学工具。

mockr提供了一个接口,用于在本地定义和运行mapreduce。只需定义map和reduce函数, 输入数据并调用run函数。一切都是按顺序和本地运行的。

安装

pip install mockr

文档

这里有完整的文档https://mockr.readthedocs.io/

流作业

streamingjob类,该类期望输入为字符的字节流。数据块由 换行符(“\n”)字符。每一行都被发送到一个单独的地图工作者。

原生python序列作业

pythonjob类期望输入为collections.abc.sequence类型对象,例如python list。python作业提供两个 执行方法:

  • 序列被分成块,每个块被发送到单独的映射工作器
  • 列表中的每个项目都单独发送给一个专用的地图工作者

熊猫工作

pandasjob类希望输入为pandas数据帧。数据帧的行平均分为块和 每个块都被发送到一个单独的map worker

示例用法

import re
from mockr import run_stream_job

WORD_RE = re.compile(r"[\w']+")

def map_fn(chunk):
    # yield each word in the line
    for word in WORD_RE.findall(chunk):
        yield (word.lower(), 1)

def reduce_fn(key, values):
    yield (key, sum(values))

input_str = "Hello!\nThis is a sample string.\nIt is very simple.\nGoodbye!"

results = run_stream_job(input_str, map_fn, reduce_fn)

print(results)

输出:

[('hello', 1), ('this', 1), ('is', 2), ('a', 1), ('sample', 1), ('string', 1), ('it', 1), ('very', 1), ('simple', 1), ('goodbye', 1)]

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

推荐PyPI第三方库


热门话题
java为什么加载个人密钥库需要这么多时间?   当我使用main创建Android应用程序UI时,如何通过java修改它。xml文件?   java Tomcat 6和7:WebappClassLoader:尝试为名称org/apache/openjpa/persistence/osgi/BundleUtils复制类定义   java`parseInt()`和`parseDouble()`throw`NumberFormatExeption`   JavaSpringMongoDB填充引用   在LinuxMint中打开Eclipse时发生java错误;OpenJDK 64位服务器VM警告:忽略选项MaxPermSize=512m;支持在8.0中被删除   使用PKCS7Padding的AES CBC加密在Java和Objective中有不同的结果   java为什么Jackson要用一个以类命名的额外层来包装我的对象?   json在Java中使用parallelStream提取值   JavaSpring存储库自动生成方法:按给定的顶部编号+按字段描述排序选择   java是否有可序列化的标准闭包接口?   .NET与Java在初创公司的web应用程序开发   如何修复java。java中的lang.unsatifiedLinkError   JavaFX+Spring Boot+Hibernate应用程序对多个环境的java支持   自定义视图组中的java更改未呈现