7 个稳定版本
2.0.1 | 2019年1月15日 |
---|---|
2.0.0 | 2019年1月12日 |
1.2.0 | 2019年1月10日 |
1.1.0 | 2018年11月29日 |
1.0.1 | 2018年9月9日 |
#595 在 并发
每月下载量 64
33KB
596 行
Efflux
Efflux 是一组 Rust 接口,用于 MapReduce 和 Hadoop Streaming。它允许 Rust 开发者在使用 Hadoop 基础设施的同时运行批处理作业,同时保持他们习惯的效率和安全性。
最初是为了解决个人问题而编写的,这个库提供了简单的特质来隐藏与 Hadoop Streaming 一起工作的内部机制,这非常适合快速编写作业。尽可能地将功能委派给宏,以提供编译时保证,并将其他任何功能保持简单,以尽可能避免开销。
安装
Efflux 可在 crates.io 上作为库 crate 提供,因此您只需将其添加为依赖项
[dependencies]
efflux = "2.0"
然后您可以通过 Efflux 的 prelude
模块访问所有相关内容
use efflux::prelude::*;
用法
Efflux 随附了一个有用的模板,用于帮助使用 kickstart 工具生成新项目。您可以简单地使用以下命令并按照提示生成新项目骨架
# install kickstart
$ cargo install kickstart
# create a project from the template
$ kickstart -s examples/template https://github.com/whitfin/efflux
如果您不想使用模板工具,您始终可以从此仓库中找到的示例开始工作。一个好的起点是传统的 wordcount 示例。
测试
测试您的二进制文件实际上相当简单,因为您可以使用基本的 UNIX 管道来模拟 Hadoop 阶段。以下示例复制了 Hadoop 作业流程并生成与使用 Hadoop 本身执行的作业相匹配的输出
# example Hadoop task invocation
$ hadoop jar hadoop-streaming-2.8.2.jar \
-input <INPUT> \
-output <OUTPUT> \
-mapper <MAPPER> \
-reducer <REDUCER>
# example simulation run via UNIX utilities
$ cat <INPUT> | <MAPPER> | sort -k1,1 | <REDUCER> > <OUTPUT>
您可以使用 wordcount 示例进行测试,以确认输出确实相同。可能存在一些输出不同的情况,但对于许多情况来说应该是足够的。
依赖关系
~2.4–3.5MB
~54K SLoC