#data #hadoop #hdfs #mapreduce #streaming

efflux

在 Rust 中实现简单的 MapReduce 和 Hadoop Streaming 接口

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并发

Download history 14/week @ 2023-10-27 8/week @ 2023-11-03 4/week @ 2023-11-10 8/week @ 2023-11-17 12/week @ 2023-11-24 31/week @ 2023-12-01 12/week @ 2023-12-08 11/week @ 2023-12-15 18/week @ 2023-12-22 9/week @ 2023-12-29 4/week @ 2024-01-05 5/week @ 2024-01-12 10/week @ 2024-01-19 17/week @ 2024-01-26 16/week @ 2024-02-02 20/week @ 2024-02-09

每月下载量 64

MIT 许可证

33KB
596

Efflux

Crates.io Build Status

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