大规模数据处理实战
蔡元楠
Google Brain资深工程师
立即订阅
8443 人已学习
课程目录
已完结 46 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 从这里开始,带你走上硅谷一线系统架构师之路
免费
模块一 | 直通硅谷大规模数据处理技术 (3讲)
01 | 为什么MapReduce会被硅谷一线公司淘汰?
02 | MapReduce后谁主沉浮:怎样设计下一代数据处理技术?
03 | 大规模数据处理初体验:怎样实现大型电商热销榜?
模块二 | 实战学习大规模数据处理基本功 (8讲)
04 | 分布式系统(上):学会用服务等级协议SLA来评估你的系统
05 | 分布式系统(下):架构师不得不知的三大指标
06 | 如何区分批处理还是流处理?
07 | Workflow设计模式:让你在大规模数据世界中君临天下
08 | 发布/订阅模式:流处理架构中的瑞士军刀
09 | CAP定理:三选二,架构师必须学会的取舍
10 | Lambda架构:Twitter亿级实时数据分析架构背后的倚天剑
11 | Kappa架构:利用Kafka锻造的屠龙刀
模块三 | 抽丝剥茧剖析Apache Spark设计精髓 (10讲)
12 | 我们为什么需要Spark?
13 | 弹性分布式数据集:Spark大厦的地基(上)
14 | 弹性分布式数据集:Spark大厦的地基(下)
15 | Spark SQL:Spark数据查询的利器
16 | Spark Streaming:Spark的实时流计算API
17 | Structured Streaming:如何用DataFrame API进行实时数据分析?
18 | Word Count:从零开始运行你的第一个Spark应用
19 | 综合案例实战:处理加州房屋信息,构建线性回归模型
20 | 流处理案例实战:分析纽约市出租车载客信息
21 | 深入对比Spark与Flink:帮你系统设计两开花
模块四 | Apache Beam为何能一统江湖 (8讲)
22 | Apache Beam的前世今生
23 | 站在Google的肩膀上学习Beam编程模型
24 | PCollection:为什么Beam要如此抽象封装数据?
25 | Transform:Beam数据转换操作的抽象方法
26 | Pipeline:Beam如何抽象多步骤的数据流水线?
27 | Pipeline I/O: Beam数据中转的设计模式
28 | 如何设计创建好一个Beam Pipeline?
29 | 如何测试Beam Pipeline?
模块五 | 决战 Apache Beam 真实硅谷案例 (7讲)
30 | Apache Beam实战冲刺:Beam如何run everywhere?
31 | WordCount Beam Pipeline实战
32 | Beam Window:打通流处理的任督二脉
33 | 横看成岭侧成峰:再战Streaming WordCount
34 | Amazon热销榜Beam Pipeline实战
35 | Facebook游戏实时流处理Beam Pipeline实战(上)
36 | Facebook游戏实时流处理Beam Pipeline实战(下)
模块六 | 大规模数据处理的挑战与未来 (4讲)
37 | 5G时代,如何处理超大规模物联网数据
38 | 大规模数据处理在深度学习中如何应用?
39 | 从SQL到Streaming SQL:突破静态数据查询的次元
40 | 大规模数据处理未来之路
专栏加餐 | 特别福利 (4讲)
FAQ第一期 | 学习大规模数据处理需要什么基础?
加油站 | Practice makes perfect!
FAQ第二期 | Spark案例实战答疑
FAQ第三期 | Apache Beam基础答疑
结束语 (1讲)
结束语 | 世间所有的相遇,都是久别重逢
大规模数据处理实战
登录|注册

33 | 横看成岭侧成峰:再战Streaming WordCount

蔡元楠 2019-07-10
你好,我是蔡元楠。
今天我要与你分享的主题是“横看成岭侧成峰:再战 Streaming WordCount”。
在上一讲中,我们学习了 Beam 窗口(Window)的概念。当时,我们提到窗口技术的产生是因为我们想要根据时间戳去分组处理一个 PCollection 中的元素。
我们也提到了在“统计莎士比亚文集词频”这个例子中,如果莎士比亚穿越到了现代,成了一名极客时间的专栏作家,我们就可能需要根据他文章的写作时间来统计词频了。
举个具体的例子的话,就是我们能不能灵活地得到莎士比亚在 2017 年 9 月使用的高频词汇?或者是他在 2018 年第 7 个周五偏爱使用的高频词汇呢?
时效性是数据处理很重要的一部分,类似上面这样的问题还有很多。
比如,能不能根据实时交通数据,得到最近 24 小时之内拥堵的道路?能不能根据所有微信分享文章的点击数据,得到过去一周最热门的文章?这些问题都是可以用窗口技术来解决。
所以今天这一讲,我们就来看看怎样在 WordCount 这个例子中使用窗口技术。我会介绍怎样在 Beam 中实现以下六个问题:
怎样区分有界数据还是无界数据?
怎样读取无边界数据?
怎样给 PCollection 数据添加时间戳?
怎样在 PCollection 应用窗口?
怎样复用之前的 DoFn 和 PTransform?
怎样存储无边界数据?
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《大规模数据处理实战》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(4)

  • 老师,窗口的跨度能多大,比如我想计算每天用户访问量?

    作者回复: 谢谢你的留言!窗口理论是可以无限大的,如果你想计算每天用户访问量比较直观的做法就是设置一个窗口时长为24小时的固定窗口。

    2019-07-10
    2
  • 三水
    老师,现在使用 Beam 模型的项目中,使用 Python 语言的多吗?如果用 Python 语言的话,Beam 除了Google的 云 Pub/Sub,还不支持 Kafka 类似的,Built-in I/O Transform 也太少了,这些都需要自己实现吗?

    作者回复: 谢谢你的提问!其实Beam对于python的支撑确实没有Java的多。在没有原生支持的情况下是需要自己实现。我知道python对于KafkaIO现在有Work in process的。

    2019-07-10
    1
  • Ming
    假如要给一个流处理的pipeline更换计算逻辑的话,在Beam层上要做相应处理吗?还是完全由底层的实现来处理的?

    Beam虽好,但是似乎,作为开发首当其冲的还是要熟练掌握一个底层计算框架。

    作者回复: 谢谢你的留言!你所说的pipeline更换计算逻辑是指应用层的逻辑还是底层实现的抽象方法?如果是底层实现的抽象方法,那还是要由底层来实现的。

    2019-07-10
  • JohnT3e
    无界数据中窗口的时间跨度的选择是否可以从下面这些方面考虑:
    1. 业务实时性要求
    2. 数据量
    比如文章中的统计一个月的高频词和某一周的,那么可以选择窗口长度为一周的固定窗口(常用英文单词是有限的,且莎士比亚一周产出的文章数量也是比较有限的。同时也符合业务上的时间要求),后面再设置一个长度为一个月的窗口,将上一个输出的PCollection结果进行合并。
    2019-07-10
    1
收起评论
4
返回
顶部