Apache Beam实战指南之基础入门(3)

开发环境 myeclipse、Spring Tool Suite 、IntelliJ IDEA,这个可以按照个人喜好,本文示例用的是 STS。

8.2 开发第一个 wordCount 程序并且运行

1 新建一个 maven 项目

Apache Beam实战指南之基础入门

2 在 pom.xml 文件中添加两个 jar 包

Apache Beam实战指南之基础入门

3 新建一个 txtIOTest.java

Apache Beam实战指南之基础入门

写入以下代码:

Apache Beam实战指南之基础入门

4 因为 Windows 上的 Beam2.0.0 不支持本地路径,需要部署到 Linux 上,需要打包如图,此处注意要把依赖 jar 都打包进去。

Apache Beam实战指南之基础入门

Apache Beam实战指南之基础入门

5 部署 beam.jar 到 Linux 环境中

使用 Xshell 5 登录虚拟机或者 Linux 系统。用 rz 命令把刚才打包的文件上传上去。其中虚拟机要安装上 jdk 并配置好环境变量。

我们可以用输入 javac 命令测试一下。

Apache Beam实战指南之基础入门

我们把 beam.jar 上传到 /usr/local/ 目录下面,然后新建一个文件,也就是源文件。命令:touch  text.txt 命令:chmod o+rwx text.txt

修改 text.txt 并添加数据。 命令:vi text.txt

Apache Beam实战指南之基础入门

运行命令:java -jar beam.jar,生成文件。

用 cat 命令查看文件内容,里面就是统计的结果。

8.3 实战剖析

我们可以通过以上实战代码进一步了解 Beam 的运用原理。

第一件事情是搭建一个管道(Pipeline),例如我们小时候家里浇地用的“水管”。它就是连接水源和处理的桥梁。

PipelineOptions pipelineOptions = PipelineOptionsFactory.create();// 创建管道

第二件事情是让我们的管道有一个处理框架,也就是我们的 Runtimes  。例如我们接到水要怎么处理,是输送给我们城市的污水处理厂,还是其他。这个污水处理厂就相当于我们的处理框架,例如现在流行的 Apache Spark 或 Apache Flink。这个要根据自己的业务指定,如下代码中我指定了本地的处理框架。

pipelineOptions.setRunner(DirectRunner.class);

第三件事情也是 Beam 最后一个重要的地方,就是模型 (Model),通俗点讲就是我们的数据来源。如果结合以上第一件和第二件的事情说就是水从哪里来,水的来源可能是河里、可能是污水通道等等。本实例用的是有界固定大小的文本文件。当然 Model 还包含无界数据,例如 kafka 等等,可以根据的需求灵活运用。

pipeline.apply(TextIO.read().from("/usr/local/text.txt")).apply ("ExtractWords", ParDo.of(new DoFn<String, String>() //后省略

最后一步是处理结果,这个比较简单,可以根据自己的需求处理。希望通过代码的实战结合原理剖析可以帮助大家更快地熟悉 Beam 并能够简单地运用 Beam。

总结

Apache Beam 是集成了很多数据模型的一个统一化平台,它为大数据开发工程师频繁换数据源或多数据源、多计算框架提供了集成统一框架平台。Apache Beam 社区现在已经集成了数据库的切换 IO,未来 Beam 中文社区还将为 Beam 集成更多的 Model 和计算框架,为大家提供方便。

作者介绍:张海涛,目前就职于海康威视云基础平台,负责云计算大数据的基础架构设计和中间件的开发,专注云计算大数据方向。Apache Beam 中文社区发起人之一,如果想进一步了解最新 Apache Beam 动态和技术研究成果,请加微信 cyrjkj 入群共同研究和运用。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/8bd8930db7a8ea133d75497504e51f47.html