31 | WordCount Beam Pipeline实战
蔡元楠

该思维导图由 AI 生成,仅供参考
你好,我是蔡元楠。
今天我要与你分享的主题是“WordCount Beam Pipeline 实战”。
前面我们已经学习了 Beam 的基础数据结构 PCollection,基本数据转换操作 Transform,还有 Pipeline 等技术。你一定跃跃欲试,想要在实际项目中使用了。这一讲我们就一起学习一下怎样用 Beam 解决数据处理领域的教科书级案例——WordCount。
WordCount 你一定不陌生,在第 18 讲中,我们就已经接触过了。WordCount 问题是起源于 MapReduce 时代就广泛使用的案例。顾名思义,WordCount 想要解决的问题是统计一个文本库中的词频。
比如,你可以用 WordCount 找出莎士比亚最喜欢使用的单词,那么你的输入是莎士比亚全集,输出就是每个单词出现的次数。举个例子,比如这一段:
在这个文本库中,我们用“the: 数字”表示 the 出现了几次,数字就是单词出现的次数。
那么我们怎样在 Beam 中处理这个问题呢?结合前面所学的知识,我们可以把 Pipeline 分为这样几步:
公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结

本文详细介绍了如何使用Apache Beam解决数据处理领域的经典案例WordCount。通过创建Pipeline、应用Transform和运行Pipeline的步骤,读者可以快速了解Beam技术特点和实际应用。文章还提出了改进代码的建议,包括编写独立的DoFn、创建PTransform合并相关联的Transform以及参数化PipelineOptions,以提高代码的可读性、复用性和测试性。通过示例代码展示了如何实现这些改进,使得最终的数据处理代码更加简洁和灵活。此外,文章还提供了关于如何测试Pipeline的建议,强调了封装数据处理操作成DoFn和PTransform的重要性。整体而言,本文通过实战案例详细介绍了Beam Pipeline的应用,对读者快速了解Beam技术特点和实际应用具有重要参考价值。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《大规模数据处理实战》,新⼈⾸单¥59
《大规模数据处理实战》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(8)
- 最新
- 精选
- cricket1981如何用Apache Beam求word count TopK问题呢?
作者回复: 谢谢你的提问!在Beam原生的Composite Transform中有一个叫Top Transform,只需要应用Top Transform然后传入一个自己实现的Comparator就好了。
2019-07-121 - cricket1981如果要按word出现次数从大到小排序应该怎么写?
作者回复: 谢谢你的提问!这个可以应用Beam中的Top Transform,实现一个Comparator Interface就可以了。
2019-07-121 - 杰洛特前两章还在说不要使用任何 DoFnTester 进行测试,这边怎么又来写 DoFnTester 了?感觉这专栏像是很多人写了拼起来的,有很多前后矛盾的地方2019-11-1446
- cricket1981Beam的函数确实难用,不像spark和scala collection那样用起来直观. sc.textFile("file:///your-input.txt").flatMap(_.split("[^\\p{L}]+")).map((_,1)).reduceByKey(_+_).map(_.swap).sortByKey(false).map(_.swap).collect2019-07-124
- 李孟聊AI这还是比较重,spark求同样的需求几个函数就搞定了2019-07-081
- 之渊实例代码 https://gitee.com/oumin12345/daimademojihe/blob/e20d60b93113d2537f4bd2e7f38b23ac17d4c3c0/cloudx/bigdata/src/main/java/test/beam/WordCountBeam.java 从我这个新人角度来看。虽然代码可能看起来没有spark 那些那么简洁。但是编程思想就是全部都是transform 。而且都是 链式调用,apply(xx).apply(xx) 其实没有差到哪里去。 1. 上手难得大大减低。spark 太多算子了,什么并发算子,什么action类的啊,等等。概念太多了。而beam 帮我们自动优化了。就好像在写很传统的java 代码一样。而且也非常易于理解。 2. 如果要类比的话,就好像 Apache beam 就是mybatis , 而 spark ,flink 就是 hibernate了。2020-08-23
- Hank_Yan还是spark方便一些。。。beam看了这么多节,只能感受到其出发点,问题抽象的独到之处,很难感受实际工作中会带来什么益处,文中例子不太容易领悟到这点。2020-07-11
- jeeeeeennnnySideinput 可以根据业务逻辑新增数据吗?2020-03-241
收起评论