大规模数据处理实战
蔡元楠
Google Brain资深工程师
立即订阅
8398 人已学习
课程目录
已完结 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讲)
结束语 | 世间所有的相遇,都是久别重逢
大规模数据处理实战
登录|注册

28 | 如何设计创建好一个Beam Pipeline?

蔡元楠 2019-06-26
你好,我是蔡元楠。
今天我要与你分享的主题是“如何设计创建好一个 Beam Pipeline”。
这一讲我们会用到第 7 讲中介绍过的四种常见设计模式——复制模式、过滤模式、分离模式和合并模式。这些设计模式就像是武功的基本套路一样,在实战中无处不在。今天,我们就一起来看看我们怎么用 Beam 的 Pipeline 来实现这些设计模式。

设计 Pipeline 的基本考虑因素

在设计 Pipeline 时,你需要注意 4 条基本的考虑因素。

1. 输入数据存储在哪里?

输入数据是存储在云存储文件系统,还是存储在一个关系型数据库里?有多大的数据量?这些都会影响你的 pipeline 设计是如何读入数据的。上一讲已经讲到过,Pipeline 的数据读入是使用 Read 这个特殊的 Transform。而数据读入往往是一个 Pipeline 的第一个数据操作。

2. 输入数据是什么格式?

输入数据是纯文本文件?还是读取自关系型数据库的行?还是结构化好的特殊数据结构?这些都会影响你对于 PCollection 的选择。比如,如果输入数据是自带 key/value 的结构,那你用 Beam 的 key/value 为元素的 PCollection 能更好的表示数据。

3. 这个 pipeline 你打算对数据进行哪些操作?

取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《大规模数据处理实战》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(7)

  • 人唯优
    平台的自然语言理解(NLP)的数据处理模块可以分析视频数据,自动生成视频字幕。
    感觉这里不是很严谨,字幕这块应该是OCR+ASR为主吧

    作者回复: 不管是OCR还是什么都是一种数据处理。我们这里的数据处理指的是一种抽象

    2019-08-21
    1
  • Ming
    我也有个小问题:在实践中一个集群往往同一时间只能执行一个pipeline吗?假如一个产品需要用到文中的全部四个例子,两个流处理两个批处理,实践中往往是有四个集群,还是一个集群?

    作者回复: 一个集群有可能同时执行两个pipeline的

    2019-06-26
    1
    1
  • cricket1981
    Beam Pipeline的合并模式是否支持keyed join,inner/left outer/right outer/full outer都支持吗? 看上面的代码示例虽然是叫Joiner Pattern,实际效果却是Union。分离模式倒是跟flink的split/select算子组合很类似。

    作者回复: 你这个问题问的很好啊,beam的join的确没有sql的join那么丰富。这是因为性能的原因只提供最基本的join。和union是不一样的,union指的是column一样的时候叠起来。

    2019-06-26
    1
  • 蒙开强
    老师你好,我问一个大数据相关的问题呢,在大数据处理场景中有没有什么好的CDC方案额。

    作者回复: CDC是什么?

    2019-06-26
    1
  • yopai
    老师,你的课程是否有实际的实例代码,这样学习效果会更好些;
    2019-08-24
  • juan

              @ProcessElement
              public void processElement(ProcessContext c) {
                if (isFiveStartMember(c.element())) {
                  c.output(c.element()); // 忘了 starmemember ???c.output(fiveStartMemberTag,c.element());
                } else if (isGoldenMember(c.element())) {
                  c.output(goldenMembershipTag, c.element());
                } else if (isDiamondMember(c.element())) {
    c.output(diamondMembershipTag, c.element());
    }
              }
            })


    2019-07-03
  • JohnT3e
    老师,有几个问题不解。在复制或者分离模式下,每个处理和输出是不同步的吧,如果业务上对不同输出有同步要求时,怎么办?复制或者分离模式和组合模式进行组合时,上一步的输出不同步或者延迟较大会加大后续组合时数据业务时间乱序问题(特别是流处理)这时有解决办法吗或者其它思路
    2019-06-26
收起评论
7
返回
顶部