SlideShare a Scribd company logo
1 of 75
Download to read offline
The Delta Architecture
Delta Lake + Apache Spark Structured Streaming
李潇 (@gatorsmile)
2019 Oct. @ Shanghai
自我介绍
• Tech Lead and Engineering Manager at Databricks
• Apache Spark Committer and PMC Member
• Previously, IBM Master Inventor
• Spark, Database Replication, Information Integration
• Ph.D. in University of Florida
• Github: gatorsmile
+
Delta Lake Joins the Linux Foundation!
2017/10 2018/06 2019/042017/06
启程
宣布
亮相
Spark + AI
Summit
开源
Dominique Brezinski (Apple Inc.)
Michael Armbrust (Databricks)
2019/10
目录 • 数据工程师的 纠结与运维的凌乱
• Delta Lake 基本原理
• Delta 架构
• Delta 架构的特性
• Delta 架构的经典案例 & Demo
• Delta Lake 社区
Process data continuously and incrementally as new data arrive in a
cost efficient way without having to choose between batch or streaming
项 目 经 理 如 是 说,
数 据 工 程 师
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
Process data continuously and incrementally as new data arrive in a
cost efficient way without having to choose between batch or streaming
项 目 经 理 如 是 说,
数 据 工 程 师 的 第 一 份 架 构 草 图,
Table
(Data gets written
continuously)
AI & Reporting
Events
Spark 作 业 由 于 小 文 件 太
多 导 致 不 断 变 慢
Stream
Stream
数 据 工 程 师 的 第 二 份 方 案
Events
额 外 的 压 缩 导 致 延 迟
Stream
Table
(Data gets written
continuously)
每 小 时 定 期
压 缩 数 据
数 据 工 程 师 的 第 三 份 方 案
AI & ReportingTable
BatchBatch
AI & ReportingTable
Batch
Events
业 务 不 接 受
超 过 1 小 时 的 延 迟
Stream
Table
(Data gets written
continuously)
Batch
每 小 时 定 期
压 缩 数 据
数 据 工 程 师 的 第 三 份 方 案
Table
(Data gets written
continuously)
Stream
Unified ViewStream
Events
Lambda 架 构
大 幅 增 加
运 营 负 担
Batch Batch
每 小 时 定 期
压 缩 数 据
数 据 工 程 师 的 第 四 份 方 案
Table
(Data gets written
continuously)
AI & Reporting
Stream
Unified ViewStream
Events
验 证 与 其 他
数 据 清 理 需
要 批 流 各 做
一 遍Batch Batch
数 据 验 证
每 小 时 定 期
压 缩 数 据
数 据 工 程 师 的 第 五 份 方 案
Table
(Data gets written
continuously)
AI & Reporting
Stream
Unified ViewStream
Events
每 小 时 定 期
压 缩 数 据
验 证 后 的 纠
错 意 味 某 些
Partition 需
要 重 新 处 理Batch Batch
数 据 验 证
重 新 处 理
数 据 工 程 师 的 第 六 份 方 案
Table
(Data gets written
continuously)
AI & Reporting
Stream
Unified ViewStream
Events
每 小 时 定 期
压 缩 数 据
数 据 湖 的
Update /
Merge 异 常
复 杂Batch Batch
数 据 验 证
重 新 处 理
Update / Merge
数 据 工 程 师 的 第 七 份 方 案
Table
(Data gets written
continuously)
AI & Reporting
Stream
Unified ViewStream
Events
每 小 时 定 期
压 缩 数 据
数 据 湖 的
Update /
Merge 异 常
复 杂Batch Batch
数 据 验 证
重 新 处 理
Update / Merge
数 据 工 程 师 的 第 七 份 方 案
经过半年研发,喜大普奔
苦心研究Lambda 架构
正式上线!
Table
(Data gets written
continuously)
AI & Reporting
Stream
Unified ViewStream
Events
每 小 时 定 期
压 缩 数 据
数 据 湖 的
Update /
Merge 异 常
复 杂Batch Batch
数 据 验 证
重 新 处 理
Update / Merge
数 据 工 程 师 的 第 七 份 方 案
Extremely slow dataframe loading
Commands Blocked on Metadata Operations
Keep getting FileNotFound
CRITICAL: inconsistent job results
Different field types causes conflicting schema
Refresh Table Issues???
Concatenate small files
How to control number of parquet files ?
Eventual Consistency !!!
坑爹
想骂娘
Table
(Data gets written
continuously)
AI & Reporting
Stream
Unified ViewStream
Events
每 小 时 定 期
压 缩 数 据
数 据 湖 的
Update /
Merge 异 常
复 杂Batch Batch
数 据 验 证
重 新 处 理
Update / Merge
面 对 Lambda 架 构,运 维 工 程 师 凌 乱 了 。。。
Table
(Data gets written
continuously)
AI & Reporting
Stream
Unified ViewStream
Events
每 小 时 定 期
压 缩 数 据
数 据 湖 的
Update /
Merge 异 常
复 杂Batch Batch
数 据 验 证
重 新 处 理
Update / Merge
运维已不易,相煎何太急!
面 对 Lambda 架 构,运 维 工 程 师 凌 乱 了 。。。
砖家点评:此方案,费钱费力,
将大好时光浪费到了解决系统局
限,而不是去从数据中抽取价值
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
Process data continuously and incrementally as new data arrive in a
cost efficient way without having to choose between batch or streaming
项 目 经 理 如 是 说,
数 据 工 程 师 的 第 一 份 架 构 草 图,
?
到底最初的方案,哪里错了???
为何选择复[ keng ] 杂[ die ] 的 Lambda 架构!!!
1)同 时 读 写, 并 且 要 保 证 数 据 的 一 致 性
2)可 以 高 吞 吐 从 大 表 读 数 据
3)遇 到 错 误 写 出 可 以 回 滚 和 删 改
4)在 线 业 务 不 下 线 的 同 时 可 以 重 新 处 理 历 史 数 据
5)处 理 迟 到 数 据 而 无 需 推 迟 下 阶 段 的 数 据 处 理
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
?
?到底缺了什么?
+ =
Delta
架 构
• 批流合并,持续数据处理
• 按需随时可重新处理历史事件
• 独立且 弹性扩展计算和存储资源
Structured
Streaming
Delta Lake 的 基 本 原 理
Delta On Disk
Transaction Log
Table Versions
(Optional) Partition Directories
Data Files
my_table/
_delta_log/
00000.json
00001.json
date=2019-01-01/
file-1.parquet
Action Types
• Change Metadata – name, schema, partitioning, etc.
• Add File – adds a file (with optional statistics)
• Remove File – removes a file
Table = result of a set of actions
Result: Current Metadata, List of Files, List of Txns, Version
Changes to the table are stored as ordered, atomic
units called commits
Add 1.parquet
Add 2.parquet
Remove 1.parquet
Remove 2.parquet
Add 3.parquet
000000.json
000001.json
。。。
Atomicity 的 实 现
1. Record start version
2. Record reads/writes
3. Attempt commit, check
for conflicts among
transactions
4. If someone else wins,
check if anything you
read has changed.
5. Try again.
乐 观 并 发 控 制
000000.json
000001.json
000002.json
User 1 User 2
Write: Append
Read: Schema
Write: Append
Read: Schema
上百万的commit log files! 如果解决海量元数据处理?
大 规 模 元 数 据 的 处 理 –UseSpark!!!
Add 1.parquet
Add 2.parquet
Remove 1.parquet
Remove 2.parquet
Add 3.parquet
Checkpoint
Delta 架 构
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
?
1)同 时 读 写, 并 且 要 保 证 数 据 的 一 致 性 (Full ACID Transaction)
Snapshot isolation between writers and readers. Focus on your data flow,
instead of worrying about failures.
流 式 写 入 Delta Table
1)同 时 读 写, 并 且 要 保 证 数 据 的 一 致 性 (Full ACID Transaction)
Snapshot isolation between writers and readers. Focus on your data flow,
instead of worrying about failures.
流 式 写 入 Delta Table
流 式 读 取 Delta Table
一 次 性 写 入 Delta Table
读 当 前 版 本 的 Delta Table
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
?
2)可 以 高 吞 吐 从 大 表 读 数 据 (Scalable metadata handling)
问题1: 百万级的 partition values?
- 从 Hive metastore 取每个partition 的location path?
问题2: 亿级的files?
- 每个partition 的 location 还要list 无数的大大小小的文件?
天荒地老
花儿枯了
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
?
2)可 以 高 吞 吐 从 大 表 读 数 据 (Scalable metadata handling)
问题1: 百万级的 partition values?
问题2: 亿级的files?
天荒地老
花儿枯了
老大,这不就是典型的大数据问题?
2)可 以 高 吞 吐 从 大 表 读 数 据 (Scalable metadata handling)
问题1: 百万级的 partition values?
问题2: 亿级的files?
天荒地老
花儿枯了
老大,这不就是典型的大数据问题?
• 使 用 Parquet 存 file paths
• 使用 Spark’s Distributed Vectorized Parquet Reader 读
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
?
3)遇 到 错 误 写 出 可 以 回 滚 (rollback) 可以删改(update/delete/merge)
数据这么脏。。。孰能无错 !
Time Travel – 仅仅为了纠错???
查 询 过 往 版 本
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
3)遇 到 错 误 写 出 可 以 回 滚 (rollback) 可以删改(update/delete/merge)
数据这么脏。。。孰能无错 !
Time Travel - 纠错,Debug,重建过往报告,查账,审计,复杂的
temporal query,快速更新Table 数据的版本查询
查 询 过 往 版 本
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
3)遇 到 错 误 写 出 可 以 回 滚 (rollback) 可以删改(update/delete/merge)
数据这么脏。。。孰能无错 !
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
3)遇 到 错 误 写 出 可 以 回 滚 (rollback) 可以删改(update/delete/merge)
数据这么脏。。。孰能无错 !
删除
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
更新
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
merge
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
3)遇 到 错 误 写 出 可 以 回 滚 (rollback) 可以删改(update/delete/merge)
update/delete/merge 能提供标准SQL文法吗?
正在努力!Spark 3.0 is coming!
支持 Spark 2.4,需要 Delta 需要加上自己的 SQL parser
4)在 线 业 务 不 下 线 的 同 时 可 以 重 新 处 理 历 史 数 据 (replay historical data)
Stream the backfilled historical data through the same pipeline
因为 ACID support,删掉相关的结果,重新改业务逻辑,历史数据的做批处理,
流可以同时持续处理最新的数据。
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
5)处 理 迟 到 数 据 (late arriving data) 而 无 需 推 迟 下 阶 段 的 数 据 处 理
Stream any late arriving data added to the table as they get added
因为 ACID support ,迟到的数据也可以通过MERGE/UPSERT 来处理
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
1)同 时 读 写, 并 且 要 保 证 数 据 的 一 致 性 (read consistent data)
2)可 以 高 吞 吐 从 大 表 读 数 据 (Scalable metadata handling)
3)遇 到 错 误 写 出 可 以 回 滚 (rollback) 可以删改(update/delete/merge)
4)在 线 业 务 不 下 线 的 同 时 可 以 重 新 处 理 历 史 数 据 (replay historical data)
5)处 理 迟 到 数 据 (late arriving data) 而 无 需 推 迟 下 阶 段 的 数 据 处 理
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
Process data continuously and incrementally as new data arrive in a
cost efficient way without having to choose between batch or streaming
项 目 经 理 如 是 说,
数 据 工 程 师 的 第 一 份 架 构 草 图 - Delta 架 构
AI & Reporting
Streaming
Analytics
Data Lake
CSV,
JSON, TXT…
Kinesis
Delta 架 构
A continuous data flow model to unify batch & streaming
Delta 架 构
A continuous data flow model to unify batch & streaming
Data Lake AI & Reporting
Streaming
Analytics
Business-level
Aggregates
Filtered, Cleaned
Augmented
Raw Ingestion
Bronze Silver Gold
CSV,
JSON, TXT…
Kinesis
Quality
INSERT
UPDATE
DELETE UPSERT
OVERWRITE
Delta 架 构 的 特 性
持 续 流 入 流 出 Delta Lake table.
● 批 流 合 并 . Same engine. Same APIs. Same user code. 无需如
Lambda架构同时使用批流处理.
● 高 效 增 量 数 据 载 入. 无需对是否有新文件加入做状态管理
[e.g., Structured Streaming’s Trigger.Once]
● 快 速 无 延 迟 流 处 理. [Trigger.ProcessingTime, Continuous]
● 简单修改即可将批处理转换成持续流处理
#1. 持 续 数 据 流
按 需 物 化 Dataframes; 特 别 当 需 要 大 量 数 据 转 换 (transformations).
物 化 (materialization) 的 目 的:
● 容 错 恢 复
#2.物化中间结果
T1
T1
T2
T2
T3
T3
T4
T5
T6
T7
Source Table Dest Tables
存 于 内 存 的 中 间 结 果
● 一写多读● 方 便 故 障 排 查
T1 T2 T3
T4
T5
T6
T7
落地的中间结果
#2.物化中间结果
按 需 物 化 Dataframes; 特 别 当 需 要 大 量 数 据 转 换 (transformations).
物 化 (materialization) 的 目 的:
● 容 错 恢 复 ● 一写多读● 方 便 故 障 排 查
T1 T2 T3
T4
T5
T6
T7
#2.物化中间结果
落地的中间结果落地的中间结果
多少个物化 Dataframes?
Reliability 和 end-2-end latency 的取舍
1. 流处理; 持续 数据流入和处理. 无需作业调度管理
[Trigger.ProcessingTime, Continuous]
#3. 费用与延迟的取舍
Data Lake AI & Reporting
Streaming
Analytics
Business-level
Aggregates
Filtered, Cleaned
Augmented
Raw Ingestion
Bronze Silver Gold
CSV,
JSON, TXT…
Kinesis
*Data Quality Levels *
1. 流处理; 持续 数据流入和处理: 需要永远在线的 clusters
2. 频繁批处理; 分钟级数据流入和处理(比如, 每半小时一次):
需要 a warm pool of machines. 无事关机,按需启动. 可使用
Spark streaming 的 Trigger.Once 模式 [incremental processing].
3. 非频繁批处理; 若干小时或若干天的数据批流入和处理: 无
事关机,按需启动. 可使用 Spark streaming 的 Trigger.Once 模式
[incremental processing].
#3. 费用与延迟的取舍
根据常用查询的predicate,为改善读取速度,可优化数据的物
理存储:
● Partitioning on low cardinality 列 (确保每个partition 大于 1GB).
○ partitionBy(date, eventType). // 仅 有 100 个 不 同 event types
● Z-Ordering on high cardinality 列
○ optimize table ZORDER BY userId. // 1 个 亿 的 不 同 user ids
#4. 优化数据的物理存储
长期保留原始数据(raw data) +
stream = 廉价的重处理
• 仅需要删除目标表,重启流处理
• 利用云的弹性计算 (cloud
elasticity) 快速处理初始回填
(initial backfill)
#5. 重新处理历史数据
.
.
.
● 原始数据表的schemas 做自动合并: 可以确保永远捕获最初的
events 而不丢失任何数据.
● 数据写入时强制 schema 限制和data expectations: 逐阶段改善数
据质量,直到数据质量达到数据分析的需求
#6. 数据质量的调整
Data Lake AI & Reporting
Streaming
Analytics
Business-level
Aggregates
Filtered, Cleaned
Augmented
Raw Ingestion
Bronze Silver Gold
CSV,
JSON, TXT…
Kinesis
Quality
*Data Quality Levels *
● 支持批处理和标准DML:
#6. 数据质量的调整
Data Lake AI & Reporting
Streaming
Analytics
Business-level
Aggregates
Filtered, Cleaned
Augmented
Raw Ingestion
Bronze Silver Gold
CSV,
JSON, TXT…
Kinesis
Quality
• Retention
• Corrections
• GDPR
• UPSERTS
INSERT
UPDATE
DELETE MERGE
OVERWRITE
• 持续的数据流入和处理 [再无Lambda架构的批流分离]
• 物化中间结果来改善可靠性和方便故障排查
• 基于用户使用场景和商业需求做费用与延迟的取舍
• 根据查询的常用模式来优化数据的物理存储
• 历史数据的再处理只需要删除结果table 重启流处理
• 通过调整schema management, data expectations
and UPDATE/DELETE/MERGE 来一步一步地改善数据
质量,直到数据可以被用于分析
关键特性
1. 减少端到端的pipeline SLA.
多个使用单位把data pipeline 的 SLA 从小时减少到分钟级别
2. 减少pipeline 的维护成本
避免了为了达到分钟级别的用例延迟而引入 lambda 架构
3. 更容易的处理数据更新和删除.
简化了Change data capture, GDPR, Sessionization, 数据去冗
4. 通过计算和存储的分离和可弹缩而降低了infrastructure 的费用
多个使用单位将infrastructure的费用降低了超过十倍
Delta 架构的优点
Delta 架 构 的 经 典 案 例
Improved reliability:
Petabyte-scale jobs
10x lower compute:
640 服 务 器 → 64!
Simpler, faster ETL:
84 jobs → 3 jobs
halved data latency
Easier transactional
updates:
No downtime or
consistency issues!
Simple CDC:
Easy with MERGE
Improved performance: Queries run faster
大 于 一 小 时 → 少 于 六 秒
自我介绍
64
Databricks Cluster
Data consistency and
integrity:
not available before
Increased data quality:
name match accuracy
up 80% → 95%
Faster data loads:
一 天 → 二十分钟
Instead of parquet … … simply say delta
dataframe
.write
.format("parquet")
.save("/data")
dataframe
.write
.format("delta")
.save("/data")
pyspark --packages io.delta:delta-core_2.12:0.4.0
bin/spark-shell --packages io.delta:delta-core_2.12:0.4.0
Add Spark Package
<dependency>
<groupId>io.delta</groupId>
<artifactId>delta-core_2.12</artifactId>
<version>0.4.0</version>
</dependency>
Maven
Demo
Delta Lake Primer
https://dbricks.co/dlw-01
Delta Lake 社区
自我介绍
Delta Lake Roadmap
Releases Features
0.2.0 • Cloud storage support
• Improved concurrency
0.3.0 • Scala/Java APIs for DML commands
• Scala/Java APIs for query commit history
• Scala/Java APIs for vacuuming old files
0.4.0 • Python APIs for DML and utility operations
• In-place Conversion of Parquet to Delta Lake table
Q4 • Enable Hive support reading Delta tables
• SQL DML support with Spark 3.0
• And more
Delta Lake Community
2+
Exabytes of Delta
Read/Writes per month
3700+
Orgs using Delta
0
5,000
10,000
15,000
20,000
M
arch
April
M
ay
June
July
AugustSeptem
ber
自我介绍
踊跃参加 Delta Lake 社区
今天就开始造属于你的Delta Lake!
https://delta.io/
Slack Channel: delta-users.slack.com
Mailing List: groups.google.com/forum/#!forum/delta-users
koalas
3.0
李潇 (lixiao AT databricks.com)
Unified data analytics platform for accelerating innovation across
data science, data engineering, and business analytics
Original creators of popular data and machine learning open source projects
Global company with 5,000 customers and 450+ partners
中国
世界那么大,全球招砖家 !

More Related Content

What's hot

王龙:百度数据库架构演变与设计
王龙:百度数据库架构演变与设计王龙:百度数据库架构演变与设计
王龙:百度数据库架构演变与设计YANGL *
 
賽門鐵克 Storage Foundation 6.0 簡報
賽門鐵克 Storage Foundation 6.0 簡報賽門鐵克 Storage Foundation 6.0 簡報
賽門鐵克 Storage Foundation 6.0 簡報Wales Chen
 
Data Analyse Black Horse - ClickHouse
Data Analyse Black Horse - ClickHouseData Analyse Black Horse - ClickHouse
Data Analyse Black Horse - ClickHouseJack Gao
 
Spark introduction - In Chinese
Spark introduction - In ChineseSpark introduction - In Chinese
Spark introduction - In Chinesecolorant
 
運用MMLSpark 來加速Spark 上 機器學習專案
運用MMLSpark 來加速Spark 上機器學習專案運用MMLSpark 來加速Spark 上機器學習專案
運用MMLSpark 來加速Spark 上 機器學習專案Herman Wu
 
ClickHouse北京Meetup ClickHouse Best Practice @Sina
ClickHouse北京Meetup ClickHouse Best Practice @SinaClickHouse北京Meetup ClickHouse Best Practice @Sina
ClickHouse北京Meetup ClickHouse Best Practice @SinaJack Gao
 
Big Data Taiwan 2014 Track1-3: Big Data, Big Challenge — Splunk 幫你解決 Big Data...
Big Data Taiwan 2014 Track1-3: Big Data, Big Challenge — Splunk 幫你解決 Big Data...Big Data Taiwan 2014 Track1-3: Big Data, Big Challenge — Splunk 幫你解決 Big Data...
Big Data Taiwan 2014 Track1-3: Big Data, Big Challenge — Splunk 幫你解決 Big Data...Etu Solution
 
数据科学分析协作平台CDSW
数据科学分析协作平台CDSW数据科学分析协作平台CDSW
数据科学分析协作平台CDSWJianwei Li
 
基于Spring batch的大数据量并行处理
基于Spring batch的大数据量并行处理基于Spring batch的大数据量并行处理
基于Spring batch的大数据量并行处理Jacky Chi
 
Elastic Stack 最新动态
Elastic Stack 最新动态Elastic Stack 最新动态
Elastic Stack 最新动态Elasticsearch
 
Hadoop的典型应用与企业化之路 for HBTC 2012
Hadoop的典型应用与企业化之路 for HBTC 2012Hadoop的典型应用与企业化之路 for HBTC 2012
Hadoop的典型应用与企业化之路 for HBTC 2012James Chen
 
How to plan a hadoop cluster for testing and production environment
How to plan a hadoop cluster for testing and production environmentHow to plan a hadoop cluster for testing and production environment
How to plan a hadoop cluster for testing and production environmentAnna Yen
 
Elastic stack day-1
Elastic stack day-1Elastic stack day-1
Elastic stack day-1YI-CHING WU
 
Apache hadoop and cdh(cloudera distribution) introduction 基本介紹
Apache hadoop and cdh(cloudera distribution) introduction 基本介紹Apache hadoop and cdh(cloudera distribution) introduction 基本介紹
Apache hadoop and cdh(cloudera distribution) introduction 基本介紹Anna Yen
 
Data Engineering in Taiwan: PAST, NOW and FUTURE
Data Engineering in Taiwan: PAST, NOW and FUTUREData Engineering in Taiwan: PAST, NOW and FUTURE
Data Engineering in Taiwan: PAST, NOW and FUTUREJazz Yao-Tsung Wang
 
Cloudera企业数据中枢平台
Cloudera企业数据中枢平台Cloudera企业数据中枢平台
Cloudera企业数据中枢平台Jianwei Li
 

What's hot (20)

王龙:百度数据库架构演变与设计
王龙:百度数据库架构演变与设计王龙:百度数据库架构演变与设计
王龙:百度数据库架构演变与设计
 
賽門鐵克 Storage Foundation 6.0 簡報
賽門鐵克 Storage Foundation 6.0 簡報賽門鐵克 Storage Foundation 6.0 簡報
賽門鐵克 Storage Foundation 6.0 簡報
 
Data Analyse Black Horse - ClickHouse
Data Analyse Black Horse - ClickHouseData Analyse Black Horse - ClickHouse
Data Analyse Black Horse - ClickHouse
 
Spark introduction - In Chinese
Spark introduction - In ChineseSpark introduction - In Chinese
Spark introduction - In Chinese
 
運用MMLSpark 來加速Spark 上 機器學習專案
運用MMLSpark 來加速Spark 上機器學習專案運用MMLSpark 來加速Spark 上機器學習專案
運用MMLSpark 來加速Spark 上 機器學習專案
 
ClickHouse北京Meetup ClickHouse Best Practice @Sina
ClickHouse北京Meetup ClickHouse Best Practice @SinaClickHouse北京Meetup ClickHouse Best Practice @Sina
ClickHouse北京Meetup ClickHouse Best Practice @Sina
 
Big Data Taiwan 2014 Track1-3: Big Data, Big Challenge — Splunk 幫你解決 Big Data...
Big Data Taiwan 2014 Track1-3: Big Data, Big Challenge — Splunk 幫你解決 Big Data...Big Data Taiwan 2014 Track1-3: Big Data, Big Challenge — Splunk 幫你解決 Big Data...
Big Data Taiwan 2014 Track1-3: Big Data, Big Challenge — Splunk 幫你解決 Big Data...
 
数据科学分析协作平台CDSW
数据科学分析协作平台CDSW数据科学分析协作平台CDSW
数据科学分析协作平台CDSW
 
基于Spring batch的大数据量并行处理
基于Spring batch的大数据量并行处理基于Spring batch的大数据量并行处理
基于Spring batch的大数据量并行处理
 
Elastic Stack 最新动态
Elastic Stack 最新动态Elastic Stack 最新动态
Elastic Stack 最新动态
 
Hadoop的典型应用与企业化之路 for HBTC 2012
Hadoop的典型应用与企业化之路 for HBTC 2012Hadoop的典型应用与企业化之路 for HBTC 2012
Hadoop的典型应用与企业化之路 for HBTC 2012
 
How to plan a hadoop cluster for testing and production environment
How to plan a hadoop cluster for testing and production environmentHow to plan a hadoop cluster for testing and production environment
How to plan a hadoop cluster for testing and production environment
 
Something about Kafka - Why Kafka is so fast
Something about Kafka - Why Kafka is so fastSomething about Kafka - Why Kafka is so fast
Something about Kafka - Why Kafka is so fast
 
Elastic stack day-1
Elastic stack day-1Elastic stack day-1
Elastic stack day-1
 
SMACK Dev Experience
SMACK Dev ExperienceSMACK Dev Experience
SMACK Dev Experience
 
Apache hadoop and cdh(cloudera distribution) introduction 基本介紹
Apache hadoop and cdh(cloudera distribution) introduction 基本介紹Apache hadoop and cdh(cloudera distribution) introduction 基本介紹
Apache hadoop and cdh(cloudera distribution) introduction 基本介紹
 
Data Engineering in Taiwan: PAST, NOW and FUTURE
Data Engineering in Taiwan: PAST, NOW and FUTUREData Engineering in Taiwan: PAST, NOW and FUTURE
Data Engineering in Taiwan: PAST, NOW and FUTURE
 
Spark tutorial
Spark tutorialSpark tutorial
Spark tutorial
 
Cloudera企业数据中枢平台
Cloudera企业数据中枢平台Cloudera企业数据中枢平台
Cloudera企业数据中枢平台
 
Databases on AWS
Databases on AWSDatabases on AWS
Databases on AWS
 

Similar to Delta Lake Architecture: Delta Lake + Apache Spark Structured Streaming

Selling sybase hds solution for banking
Selling sybase hds solution for bankingSelling sybase hds solution for banking
Selling sybase hds solution for bankingfocusbi
 
05 杨志丰
05 杨志丰05 杨志丰
05 杨志丰锐 张
 
基于Hbase的实时计算分享
基于Hbase的实时计算分享基于Hbase的实时计算分享
基于Hbase的实时计算分享yiihsia
 
基于Hbase的实时计算分享
基于Hbase的实时计算分享基于Hbase的实时计算分享
基于Hbase的实时计算分享yiihsia
 
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页liu sheng
 
選擇正確的Solution 來建置現代化的雲端資料倉儲
選擇正確的Solution 來建置現代化的雲端資料倉儲選擇正確的Solution 來建置現代化的雲端資料倉儲
選擇正確的Solution 來建置現代化的雲端資料倉儲Herman Wu
 
Ocean base 千亿级海量数据库-日照
Ocean base 千亿级海量数据库-日照Ocean base 千亿级海量数据库-日照
Ocean base 千亿级海量数据库-日照Shaoning Pan
 
Ocean base海量结构化数据存储系统 hadoop in china
Ocean base海量结构化数据存储系统 hadoop in chinaOcean base海量结构化数据存储系统 hadoop in china
Ocean base海量结构化数据存储系统 hadoop in chinaknuthocean
 
开源+自主开发 - 淘宝软件基础设施构建实践
开源+自主开发  - 淘宝软件基础设施构建实践开源+自主开发  - 淘宝软件基础设施构建实践
开源+自主开发 - 淘宝软件基础设施构建实践Wensong Zhang
 
Hbase在淘宝的应用与优化 修改
Hbase在淘宝的应用与优化 修改Hbase在淘宝的应用与优化 修改
Hbase在淘宝的应用与优化 修改yp_fangdong
 
20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流
20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流
20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流liu sheng
 
imobile-beta技术沙龙
imobile-beta技术沙龙imobile-beta技术沙龙
imobile-beta技术沙龙posestudio
 
Taobao图片存储与cdn系统到服务
Taobao图片存储与cdn系统到服务Taobao图片存储与cdn系统到服务
Taobao图片存储与cdn系统到服务Wensong Zhang
 
淘宝对象存储与Cdn系统到服务
淘宝对象存储与Cdn系统到服务淘宝对象存储与Cdn系统到服务
淘宝对象存储与Cdn系统到服务drewz lin
 
COSCUP 2019 - 開源大數據引擎 Greenplum
COSCUP 2019 - 開源大數據引擎 GreenplumCOSCUP 2019 - 開源大數據引擎 Greenplum
COSCUP 2019 - 開源大數據引擎 GreenplumOmni-Alex Chen
 
Big Data Projet Management the Body of Knowledge (BDPMBOK)
Big Data Projet Management the Body of Knowledge (BDPMBOK)Big Data Projet Management the Body of Knowledge (BDPMBOK)
Big Data Projet Management the Body of Knowledge (BDPMBOK)Jazz Yao-Tsung Wang
 
大型系统的Java中间件实践q con北京
大型系统的Java中间件实践q con北京大型系统的Java中间件实践q con北京
大型系统的Java中间件实践q con北京vanadies10
 
数据库性能诊断的七种武器
数据库性能诊断的七种武器数据库性能诊断的七种武器
数据库性能诊断的七种武器Leyi (Kamus) Zhang
 

Similar to Delta Lake Architecture: Delta Lake + Apache Spark Structured Streaming (20)

Selling sybase hds solution for banking
Selling sybase hds solution for bankingSelling sybase hds solution for banking
Selling sybase hds solution for banking
 
Cdc@ganji.com
Cdc@ganji.comCdc@ganji.com
Cdc@ganji.com
 
05 杨志丰
05 杨志丰05 杨志丰
05 杨志丰
 
基于Hbase的实时计算分享
基于Hbase的实时计算分享基于Hbase的实时计算分享
基于Hbase的实时计算分享
 
基于Hbase的实时计算分享
基于Hbase的实时计算分享基于Hbase的实时计算分享
基于Hbase的实时计算分享
 
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页
 
選擇正確的Solution 來建置現代化的雲端資料倉儲
選擇正確的Solution 來建置現代化的雲端資料倉儲選擇正確的Solution 來建置現代化的雲端資料倉儲
選擇正確的Solution 來建置現代化的雲端資料倉儲
 
Ocean base 千亿级海量数据库-日照
Ocean base 千亿级海量数据库-日照Ocean base 千亿级海量数据库-日照
Ocean base 千亿级海量数据库-日照
 
Ocean base海量结构化数据存储系统 hadoop in china
Ocean base海量结构化数据存储系统 hadoop in chinaOcean base海量结构化数据存储系统 hadoop in china
Ocean base海量结构化数据存储系统 hadoop in china
 
开源+自主开发 - 淘宝软件基础设施构建实践
开源+自主开发  - 淘宝软件基础设施构建实践开源+自主开发  - 淘宝软件基础设施构建实践
开源+自主开发 - 淘宝软件基础设施构建实践
 
Hic2011
Hic2011Hic2011
Hic2011
 
Hbase在淘宝的应用与优化 修改
Hbase在淘宝的应用与优化 修改Hbase在淘宝的应用与优化 修改
Hbase在淘宝的应用与优化 修改
 
20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流
20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流
20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流
 
imobile-beta技术沙龙
imobile-beta技术沙龙imobile-beta技术沙龙
imobile-beta技术沙龙
 
Taobao图片存储与cdn系统到服务
Taobao图片存储与cdn系统到服务Taobao图片存储与cdn系统到服务
Taobao图片存储与cdn系统到服务
 
淘宝对象存储与Cdn系统到服务
淘宝对象存储与Cdn系统到服务淘宝对象存储与Cdn系统到服务
淘宝对象存储与Cdn系统到服务
 
COSCUP 2019 - 開源大數據引擎 Greenplum
COSCUP 2019 - 開源大數據引擎 GreenplumCOSCUP 2019 - 開源大數據引擎 Greenplum
COSCUP 2019 - 開源大數據引擎 Greenplum
 
Big Data Projet Management the Body of Knowledge (BDPMBOK)
Big Data Projet Management the Body of Knowledge (BDPMBOK)Big Data Projet Management the Body of Knowledge (BDPMBOK)
Big Data Projet Management the Body of Knowledge (BDPMBOK)
 
大型系统的Java中间件实践q con北京
大型系统的Java中间件实践q con北京大型系统的Java中间件实践q con北京
大型系统的Java中间件实践q con北京
 
数据库性能诊断的七种武器
数据库性能诊断的七种武器数据库性能诊断的七种武器
数据库性能诊断的七种武器
 

Recently uploaded

上海长宁区外围预约【选妞网址☆qmm123.com】上海长宁区嫩模
上海长宁区外围预约【选妞网址☆qmm123.com】上海长宁区嫩模上海长宁区外围预约【选妞网址☆qmm123.com】上海长宁区嫩模
上海长宁区外围预约【选妞网址☆qmm123.com】上海长宁区嫩模ruegsgbn
 
香奈尔女包原版a货
香奈尔女包原版a货香奈尔女包原版a货
香奈尔女包原版a货chuanwst
 
遗失身份证号码大全【官网:bzw987.com】异地办理身份证
遗失身份证号码大全【官网:bzw987.com】异地办理身份证遗失身份证号码大全【官网:bzw987.com】异地办理身份证
遗失身份证号码大全【官网:bzw987.com】异地办理身份证jieoqndm
 
谷歌色情网站引流技术【推广网址☆seotg8.com】谷歌色情网站代做排名
谷歌色情网站引流技术【推广网址☆seotg8.com】谷歌色情网站代做排名谷歌色情网站引流技术【推广网址☆seotg8.com】谷歌色情网站代做排名
谷歌色情网站引流技术【推广网址☆seotg8.com】谷歌色情网站代做排名chuangdi
 
twitter 营销软件【推广网址☆seotg8.com】twitter全网营销
twitter 营销软件【推广网址☆seotg8.com】twitter全网营销twitter 营销软件【推广网址☆seotg8.com】twitter全网营销
twitter 营销软件【推广网址☆seotg8.com】twitter全网营销dianmano
 
榆林哪里有小姐上门【选妞网址☆qmm123.com】榆林技师
榆林哪里有小姐上门【选妞网址☆qmm123.com】榆林技师榆林哪里有小姐上门【选妞网址☆qmm123.com】榆林技师
榆林哪里有小姐上门【选妞网址☆qmm123.com】榆林技师miuliuyo
 
棋牌精准引流【推广网址☆seotg8.com】棋牌快速排名
棋牌精准引流【推广网址☆seotg8.com】棋牌快速排名棋牌精准引流【推广网址☆seotg8.com】棋牌快速排名
棋牌精准引流【推广网址☆seotg8.com】棋牌快速排名kaiqihui
 
google色情网站排名技术【推广网址☆seotg8.com】google色情网站精准引流
google色情网站排名技术【推广网址☆seotg8.com】google色情网站精准引流google色情网站排名技术【推广网址☆seotg8.com】google色情网站精准引流
google色情网站排名技术【推广网址☆seotg8.com】google色情网站精准引流jirandua
 
中国google留痕转码收录【推广网址☆seotg8.com】中国google留痕收录
中国google留痕转码收录【推广网址☆seotg8.com】中国google留痕收录中国google留痕转码收录【推广网址☆seotg8.com】中国google留痕收录
中国google留痕转码收录【推广网址☆seotg8.com】中国google留痕收录yermhbpq
 
澳门学生同城包夜【选妞网址☆qmm123.com】澳门哪里有美女伴游
澳门学生同城包夜【选妞网址☆qmm123.com】澳门哪里有美女伴游澳门学生同城包夜【选妞网址☆qmm123.com】澳门哪里有美女伴游
澳门学生同城包夜【选妞网址☆qmm123.com】澳门哪里有美女伴游jivxhfiz
 
青岛约炮交友【选妞网址☆qmm123.com】青岛大学生
青岛约炮交友【选妞网址☆qmm123.com】青岛大学生青岛约炮交友【选妞网址☆qmm123.com】青岛大学生
青岛约炮交友【选妞网址☆qmm123.com】青岛大学生qianvdax
 
TikTok脚本攻略【☆认准_77qunfa.com☆】全球通youtube机器人效果
TikTok脚本攻略【☆认准_77qunfa.com☆】全球通youtube机器人效果TikTok脚本攻略【☆认准_77qunfa.com☆】全球通youtube机器人效果
TikTok脚本攻略【☆认准_77qunfa.com☆】全球通youtube机器人效果weiqmtbh
 
爱宝时(EPOS)复刻机械手表哪里卖【微信☆899486682】复刻劳力士手表价格多少钱
爱宝时(EPOS)复刻机械手表哪里卖【微信☆899486682】复刻劳力士手表价格多少钱爱宝时(EPOS)复刻机械手表哪里卖【微信☆899486682】复刻劳力士手表价格多少钱
爱宝时(EPOS)复刻机械手表哪里卖【微信☆899486682】复刻劳力士手表价格多少钱liangzhe2
 
办个假毕业证哪里有【官网:zhengjian.shop】办个假毕业证书要多少钱
办个假毕业证哪里有【官网:zhengjian.shop】办个假毕业证书要多少钱办个假毕业证哪里有【官网:zhengjian.shop】办个假毕业证书要多少钱
办个假毕业证哪里有【官网:zhengjian.shop】办个假毕业证书要多少钱jiepobtg
 
催情药主要化学成分【网址☆THC88.com】催情药自己制作方法
催情药主要化学成分【网址☆THC88.com】催情药自己制作方法催情药主要化学成分【网址☆THC88.com】催情药自己制作方法
催情药主要化学成分【网址☆THC88.com】催情药自己制作方法lianlusu
 
离职证明范本【官网:bzw987.com】离职证明模板
离职证明范本【官网:bzw987.com】离职证明模板离职证明范本【官网:bzw987.com】离职证明模板
离职证明范本【官网:bzw987.com】离职证明模板yangpgnx
 
谷歌bc优化【推广网址☆seotg8.com】谷歌bc引流方法
谷歌bc优化【推广网址☆seotg8.com】谷歌bc引流方法谷歌bc优化【推广网址☆seotg8.com】谷歌bc引流方法
谷歌bc优化【推广网址☆seotg8.com】谷歌bc引流方法dianjpqr
 
黄色网站引流渠道【推广网址☆seotg8.com】黄色网站广告投放
黄色网站引流渠道【推广网址☆seotg8.com】黄色网站广告投放黄色网站引流渠道【推广网址☆seotg8.com】黄色网站广告投放
黄色网站引流渠道【推广网址☆seotg8.com】黄色网站广告投放jianjuei
 
劳力士高仿蚝式179171【微信☆89486682】百达翡丽(Patek Philippe)一比一复刻女石英表多少钱一块
劳力士高仿蚝式179171【微信☆89486682】百达翡丽(Patek Philippe)一比一复刻女石英表多少钱一块劳力士高仿蚝式179171【微信☆89486682】百达翡丽(Patek Philippe)一比一复刻女石英表多少钱一块
劳力士高仿蚝式179171【微信☆89486682】百达翡丽(Patek Philippe)一比一复刻女石英表多少钱一块wengcesh
 
google黄色网站排名技巧【推广网址☆seotg8.com】google黄色网站排名方法
google黄色网站排名技巧【推广网址☆seotg8.com】google黄色网站排名方法google黄色网站排名技巧【推广网址☆seotg8.com】google黄色网站排名方法
google黄色网站排名技巧【推广网址☆seotg8.com】google黄色网站排名方法panqiany
 

Recently uploaded (20)

上海长宁区外围预约【选妞网址☆qmm123.com】上海长宁区嫩模
上海长宁区外围预约【选妞网址☆qmm123.com】上海长宁区嫩模上海长宁区外围预约【选妞网址☆qmm123.com】上海长宁区嫩模
上海长宁区外围预约【选妞网址☆qmm123.com】上海长宁区嫩模
 
香奈尔女包原版a货
香奈尔女包原版a货香奈尔女包原版a货
香奈尔女包原版a货
 
遗失身份证号码大全【官网:bzw987.com】异地办理身份证
遗失身份证号码大全【官网:bzw987.com】异地办理身份证遗失身份证号码大全【官网:bzw987.com】异地办理身份证
遗失身份证号码大全【官网:bzw987.com】异地办理身份证
 
谷歌色情网站引流技术【推广网址☆seotg8.com】谷歌色情网站代做排名
谷歌色情网站引流技术【推广网址☆seotg8.com】谷歌色情网站代做排名谷歌色情网站引流技术【推广网址☆seotg8.com】谷歌色情网站代做排名
谷歌色情网站引流技术【推广网址☆seotg8.com】谷歌色情网站代做排名
 
twitter 营销软件【推广网址☆seotg8.com】twitter全网营销
twitter 营销软件【推广网址☆seotg8.com】twitter全网营销twitter 营销软件【推广网址☆seotg8.com】twitter全网营销
twitter 营销软件【推广网址☆seotg8.com】twitter全网营销
 
榆林哪里有小姐上门【选妞网址☆qmm123.com】榆林技师
榆林哪里有小姐上门【选妞网址☆qmm123.com】榆林技师榆林哪里有小姐上门【选妞网址☆qmm123.com】榆林技师
榆林哪里有小姐上门【选妞网址☆qmm123.com】榆林技师
 
棋牌精准引流【推广网址☆seotg8.com】棋牌快速排名
棋牌精准引流【推广网址☆seotg8.com】棋牌快速排名棋牌精准引流【推广网址☆seotg8.com】棋牌快速排名
棋牌精准引流【推广网址☆seotg8.com】棋牌快速排名
 
google色情网站排名技术【推广网址☆seotg8.com】google色情网站精准引流
google色情网站排名技术【推广网址☆seotg8.com】google色情网站精准引流google色情网站排名技术【推广网址☆seotg8.com】google色情网站精准引流
google色情网站排名技术【推广网址☆seotg8.com】google色情网站精准引流
 
中国google留痕转码收录【推广网址☆seotg8.com】中国google留痕收录
中国google留痕转码收录【推广网址☆seotg8.com】中国google留痕收录中国google留痕转码收录【推广网址☆seotg8.com】中国google留痕收录
中国google留痕转码收录【推广网址☆seotg8.com】中国google留痕收录
 
澳门学生同城包夜【选妞网址☆qmm123.com】澳门哪里有美女伴游
澳门学生同城包夜【选妞网址☆qmm123.com】澳门哪里有美女伴游澳门学生同城包夜【选妞网址☆qmm123.com】澳门哪里有美女伴游
澳门学生同城包夜【选妞网址☆qmm123.com】澳门哪里有美女伴游
 
青岛约炮交友【选妞网址☆qmm123.com】青岛大学生
青岛约炮交友【选妞网址☆qmm123.com】青岛大学生青岛约炮交友【选妞网址☆qmm123.com】青岛大学生
青岛约炮交友【选妞网址☆qmm123.com】青岛大学生
 
TikTok脚本攻略【☆认准_77qunfa.com☆】全球通youtube机器人效果
TikTok脚本攻略【☆认准_77qunfa.com☆】全球通youtube机器人效果TikTok脚本攻略【☆认准_77qunfa.com☆】全球通youtube机器人效果
TikTok脚本攻略【☆认准_77qunfa.com☆】全球通youtube机器人效果
 
爱宝时(EPOS)复刻机械手表哪里卖【微信☆899486682】复刻劳力士手表价格多少钱
爱宝时(EPOS)复刻机械手表哪里卖【微信☆899486682】复刻劳力士手表价格多少钱爱宝时(EPOS)复刻机械手表哪里卖【微信☆899486682】复刻劳力士手表价格多少钱
爱宝时(EPOS)复刻机械手表哪里卖【微信☆899486682】复刻劳力士手表价格多少钱
 
办个假毕业证哪里有【官网:zhengjian.shop】办个假毕业证书要多少钱
办个假毕业证哪里有【官网:zhengjian.shop】办个假毕业证书要多少钱办个假毕业证哪里有【官网:zhengjian.shop】办个假毕业证书要多少钱
办个假毕业证哪里有【官网:zhengjian.shop】办个假毕业证书要多少钱
 
催情药主要化学成分【网址☆THC88.com】催情药自己制作方法
催情药主要化学成分【网址☆THC88.com】催情药自己制作方法催情药主要化学成分【网址☆THC88.com】催情药自己制作方法
催情药主要化学成分【网址☆THC88.com】催情药自己制作方法
 
离职证明范本【官网:bzw987.com】离职证明模板
离职证明范本【官网:bzw987.com】离职证明模板离职证明范本【官网:bzw987.com】离职证明模板
离职证明范本【官网:bzw987.com】离职证明模板
 
谷歌bc优化【推广网址☆seotg8.com】谷歌bc引流方法
谷歌bc优化【推广网址☆seotg8.com】谷歌bc引流方法谷歌bc优化【推广网址☆seotg8.com】谷歌bc引流方法
谷歌bc优化【推广网址☆seotg8.com】谷歌bc引流方法
 
黄色网站引流渠道【推广网址☆seotg8.com】黄色网站广告投放
黄色网站引流渠道【推广网址☆seotg8.com】黄色网站广告投放黄色网站引流渠道【推广网址☆seotg8.com】黄色网站广告投放
黄色网站引流渠道【推广网址☆seotg8.com】黄色网站广告投放
 
劳力士高仿蚝式179171【微信☆89486682】百达翡丽(Patek Philippe)一比一复刻女石英表多少钱一块
劳力士高仿蚝式179171【微信☆89486682】百达翡丽(Patek Philippe)一比一复刻女石英表多少钱一块劳力士高仿蚝式179171【微信☆89486682】百达翡丽(Patek Philippe)一比一复刻女石英表多少钱一块
劳力士高仿蚝式179171【微信☆89486682】百达翡丽(Patek Philippe)一比一复刻女石英表多少钱一块
 
google黄色网站排名技巧【推广网址☆seotg8.com】google黄色网站排名方法
google黄色网站排名技巧【推广网址☆seotg8.com】google黄色网站排名方法google黄色网站排名技巧【推广网址☆seotg8.com】google黄色网站排名方法
google黄色网站排名技巧【推广网址☆seotg8.com】google黄色网站排名方法
 

Delta Lake Architecture: Delta Lake + Apache Spark Structured Streaming

  • 1. The Delta Architecture Delta Lake + Apache Spark Structured Streaming 李潇 (@gatorsmile) 2019 Oct. @ Shanghai
  • 2. 自我介绍 • Tech Lead and Engineering Manager at Databricks • Apache Spark Committer and PMC Member • Previously, IBM Master Inventor • Spark, Database Replication, Information Integration • Ph.D. in University of Florida • Github: gatorsmile
  • 3. + Delta Lake Joins the Linux Foundation!
  • 4.
  • 5. 2017/10 2018/06 2019/042017/06 启程 宣布 亮相 Spark + AI Summit 开源 Dominique Brezinski (Apple Inc.) Michael Armbrust (Databricks) 2019/10
  • 6. 目录 • 数据工程师的 纠结与运维的凌乱 • Delta Lake 基本原理 • Delta 架构 • Delta 架构的特性 • Delta 架构的经典案例 & Demo • Delta Lake 社区
  • 7. Process data continuously and incrementally as new data arrive in a cost efficient way without having to choose between batch or streaming 项 目 经 理 如 是 说, 数 据 工 程 师
  • 8. Data Lake CSV, JSON, TXT… Kinesis AI & Reporting Process data continuously and incrementally as new data arrive in a cost efficient way without having to choose between batch or streaming 项 目 经 理 如 是 说, 数 据 工 程 师 的 第 一 份 架 构 草 图,
  • 9. Table (Data gets written continuously) AI & Reporting Events Spark 作 业 由 于 小 文 件 太 多 导 致 不 断 变 慢 Stream Stream 数 据 工 程 师 的 第 二 份 方 案
  • 10. Events 额 外 的 压 缩 导 致 延 迟 Stream Table (Data gets written continuously) 每 小 时 定 期 压 缩 数 据 数 据 工 程 师 的 第 三 份 方 案 AI & ReportingTable BatchBatch
  • 11. AI & ReportingTable Batch Events 业 务 不 接 受 超 过 1 小 时 的 延 迟 Stream Table (Data gets written continuously) Batch 每 小 时 定 期 压 缩 数 据 数 据 工 程 师 的 第 三 份 方 案
  • 12. Table (Data gets written continuously) Stream Unified ViewStream Events Lambda 架 构 大 幅 增 加 运 营 负 担 Batch Batch 每 小 时 定 期 压 缩 数 据 数 据 工 程 师 的 第 四 份 方 案
  • 13. Table (Data gets written continuously) AI & Reporting Stream Unified ViewStream Events 验 证 与 其 他 数 据 清 理 需 要 批 流 各 做 一 遍Batch Batch 数 据 验 证 每 小 时 定 期 压 缩 数 据 数 据 工 程 师 的 第 五 份 方 案
  • 14. Table (Data gets written continuously) AI & Reporting Stream Unified ViewStream Events 每 小 时 定 期 压 缩 数 据 验 证 后 的 纠 错 意 味 某 些 Partition 需 要 重 新 处 理Batch Batch 数 据 验 证 重 新 处 理 数 据 工 程 师 的 第 六 份 方 案
  • 15. Table (Data gets written continuously) AI & Reporting Stream Unified ViewStream Events 每 小 时 定 期 压 缩 数 据 数 据 湖 的 Update / Merge 异 常 复 杂Batch Batch 数 据 验 证 重 新 处 理 Update / Merge 数 据 工 程 师 的 第 七 份 方 案
  • 16. Table (Data gets written continuously) AI & Reporting Stream Unified ViewStream Events 每 小 时 定 期 压 缩 数 据 数 据 湖 的 Update / Merge 异 常 复 杂Batch Batch 数 据 验 证 重 新 处 理 Update / Merge 数 据 工 程 师 的 第 七 份 方 案 经过半年研发,喜大普奔 苦心研究Lambda 架构 正式上线!
  • 17. Table (Data gets written continuously) AI & Reporting Stream Unified ViewStream Events 每 小 时 定 期 压 缩 数 据 数 据 湖 的 Update / Merge 异 常 复 杂Batch Batch 数 据 验 证 重 新 处 理 Update / Merge 数 据 工 程 师 的 第 七 份 方 案 Extremely slow dataframe loading Commands Blocked on Metadata Operations Keep getting FileNotFound CRITICAL: inconsistent job results Different field types causes conflicting schema Refresh Table Issues??? Concatenate small files How to control number of parquet files ? Eventual Consistency !!! 坑爹 想骂娘
  • 18. Table (Data gets written continuously) AI & Reporting Stream Unified ViewStream Events 每 小 时 定 期 压 缩 数 据 数 据 湖 的 Update / Merge 异 常 复 杂Batch Batch 数 据 验 证 重 新 处 理 Update / Merge 面 对 Lambda 架 构,运 维 工 程 师 凌 乱 了 。。。
  • 19. Table (Data gets written continuously) AI & Reporting Stream Unified ViewStream Events 每 小 时 定 期 压 缩 数 据 数 据 湖 的 Update / Merge 异 常 复 杂Batch Batch 数 据 验 证 重 新 处 理 Update / Merge 运维已不易,相煎何太急! 面 对 Lambda 架 构,运 维 工 程 师 凌 乱 了 。。。 砖家点评:此方案,费钱费力, 将大好时光浪费到了解决系统局 限,而不是去从数据中抽取价值
  • 20. Data Lake CSV, JSON, TXT… Kinesis AI & Reporting Process data continuously and incrementally as new data arrive in a cost efficient way without having to choose between batch or streaming 项 目 经 理 如 是 说, 数 据 工 程 师 的 第 一 份 架 构 草 图, ? 到底最初的方案,哪里错了??? 为何选择复[ keng ] 杂[ die ] 的 Lambda 架构!!!
  • 21. 1)同 时 读 写, 并 且 要 保 证 数 据 的 一 致 性 2)可 以 高 吞 吐 从 大 表 读 数 据 3)遇 到 错 误 写 出 可 以 回 滚 和 删 改 4)在 线 业 务 不 下 线 的 同 时 可 以 重 新 处 理 历 史 数 据 5)处 理 迟 到 数 据 而 无 需 推 迟 下 阶 段 的 数 据 处 理 Data Lake CSV, JSON, TXT… Kinesis AI & Reporting ? ?到底缺了什么?
  • 22. + = Delta 架 构 • 批流合并,持续数据处理 • 按需随时可重新处理历史事件 • 独立且 弹性扩展计算和存储资源 Structured Streaming
  • 23. Delta Lake 的 基 本 原 理
  • 24. Delta On Disk Transaction Log Table Versions (Optional) Partition Directories Data Files my_table/ _delta_log/ 00000.json 00001.json date=2019-01-01/ file-1.parquet
  • 25. Action Types • Change Metadata – name, schema, partitioning, etc. • Add File – adds a file (with optional statistics) • Remove File – removes a file Table = result of a set of actions Result: Current Metadata, List of Files, List of Txns, Version
  • 26. Changes to the table are stored as ordered, atomic units called commits Add 1.parquet Add 2.parquet Remove 1.parquet Remove 2.parquet Add 3.parquet 000000.json 000001.json 。。。 Atomicity 的 实 现
  • 27. 1. Record start version 2. Record reads/writes 3. Attempt commit, check for conflicts among transactions 4. If someone else wins, check if anything you read has changed. 5. Try again. 乐 观 并 发 控 制 000000.json 000001.json 000002.json User 1 User 2 Write: Append Read: Schema Write: Append Read: Schema
  • 28. 上百万的commit log files! 如果解决海量元数据处理? 大 规 模 元 数 据 的 处 理 –UseSpark!!! Add 1.parquet Add 2.parquet Remove 1.parquet Remove 2.parquet Add 3.parquet Checkpoint
  • 30. Data Lake CSV, JSON, TXT… Kinesis AI & Reporting ? 1)同 时 读 写, 并 且 要 保 证 数 据 的 一 致 性 (Full ACID Transaction) Snapshot isolation between writers and readers. Focus on your data flow, instead of worrying about failures. 流 式 写 入 Delta Table
  • 31. 1)同 时 读 写, 并 且 要 保 证 数 据 的 一 致 性 (Full ACID Transaction) Snapshot isolation between writers and readers. Focus on your data flow, instead of worrying about failures. 流 式 写 入 Delta Table 流 式 读 取 Delta Table 一 次 性 写 入 Delta Table 读 当 前 版 本 的 Delta Table Data Lake CSV, JSON, TXT… Kinesis AI & Reporting
  • 32. Data Lake CSV, JSON, TXT… Kinesis AI & Reporting ? 2)可 以 高 吞 吐 从 大 表 读 数 据 (Scalable metadata handling) 问题1: 百万级的 partition values? - 从 Hive metastore 取每个partition 的location path? 问题2: 亿级的files? - 每个partition 的 location 还要list 无数的大大小小的文件? 天荒地老 花儿枯了
  • 33. Data Lake CSV, JSON, TXT… Kinesis AI & Reporting ? 2)可 以 高 吞 吐 从 大 表 读 数 据 (Scalable metadata handling) 问题1: 百万级的 partition values? 问题2: 亿级的files? 天荒地老 花儿枯了 老大,这不就是典型的大数据问题?
  • 34. 2)可 以 高 吞 吐 从 大 表 读 数 据 (Scalable metadata handling) 问题1: 百万级的 partition values? 问题2: 亿级的files? 天荒地老 花儿枯了 老大,这不就是典型的大数据问题? • 使 用 Parquet 存 file paths • 使用 Spark’s Distributed Vectorized Parquet Reader 读 Data Lake CSV, JSON, TXT… Kinesis AI & Reporting
  • 35. Data Lake CSV, JSON, TXT… Kinesis AI & Reporting ? 3)遇 到 错 误 写 出 可 以 回 滚 (rollback) 可以删改(update/delete/merge) 数据这么脏。。。孰能无错 !
  • 36. Time Travel – 仅仅为了纠错??? 查 询 过 往 版 本 Data Lake CSV, JSON, TXT… Kinesis AI & Reporting 3)遇 到 错 误 写 出 可 以 回 滚 (rollback) 可以删改(update/delete/merge) 数据这么脏。。。孰能无错 !
  • 37. Time Travel - 纠错,Debug,重建过往报告,查账,审计,复杂的 temporal query,快速更新Table 数据的版本查询 查 询 过 往 版 本 Data Lake CSV, JSON, TXT… Kinesis AI & Reporting 3)遇 到 错 误 写 出 可 以 回 滚 (rollback) 可以删改(update/delete/merge) 数据这么脏。。。孰能无错 !
  • 38. Data Lake CSV, JSON, TXT… Kinesis AI & Reporting 3)遇 到 错 误 写 出 可 以 回 滚 (rollback) 可以删改(update/delete/merge) 数据这么脏。。。孰能无错 ! 删除
  • 41. Data Lake CSV, JSON, TXT… Kinesis AI & Reporting 3)遇 到 错 误 写 出 可 以 回 滚 (rollback) 可以删改(update/delete/merge) update/delete/merge 能提供标准SQL文法吗? 正在努力!Spark 3.0 is coming! 支持 Spark 2.4,需要 Delta 需要加上自己的 SQL parser
  • 42. 4)在 线 业 务 不 下 线 的 同 时 可 以 重 新 处 理 历 史 数 据 (replay historical data) Stream the backfilled historical data through the same pipeline 因为 ACID support,删掉相关的结果,重新改业务逻辑,历史数据的做批处理, 流可以同时持续处理最新的数据。 Data Lake CSV, JSON, TXT… Kinesis AI & Reporting
  • 43. 5)处 理 迟 到 数 据 (late arriving data) 而 无 需 推 迟 下 阶 段 的 数 据 处 理 Stream any late arriving data added to the table as they get added 因为 ACID support ,迟到的数据也可以通过MERGE/UPSERT 来处理 Data Lake CSV, JSON, TXT… Kinesis AI & Reporting
  • 44. 1)同 时 读 写, 并 且 要 保 证 数 据 的 一 致 性 (read consistent data) 2)可 以 高 吞 吐 从 大 表 读 数 据 (Scalable metadata handling) 3)遇 到 错 误 写 出 可 以 回 滚 (rollback) 可以删改(update/delete/merge) 4)在 线 业 务 不 下 线 的 同 时 可 以 重 新 处 理 历 史 数 据 (replay historical data) 5)处 理 迟 到 数 据 (late arriving data) 而 无 需 推 迟 下 阶 段 的 数 据 处 理 Data Lake CSV, JSON, TXT… Kinesis AI & Reporting
  • 45. Data Lake CSV, JSON, TXT… Kinesis AI & Reporting Process data continuously and incrementally as new data arrive in a cost efficient way without having to choose between batch or streaming 项 目 经 理 如 是 说, 数 据 工 程 师 的 第 一 份 架 构 草 图 - Delta 架 构
  • 46. AI & Reporting Streaming Analytics Data Lake CSV, JSON, TXT… Kinesis Delta 架 构 A continuous data flow model to unify batch & streaming
  • 47. Delta 架 构 A continuous data flow model to unify batch & streaming Data Lake AI & Reporting Streaming Analytics Business-level Aggregates Filtered, Cleaned Augmented Raw Ingestion Bronze Silver Gold CSV, JSON, TXT… Kinesis Quality INSERT UPDATE DELETE UPSERT OVERWRITE
  • 48. Delta 架 构 的 特 性
  • 49. 持 续 流 入 流 出 Delta Lake table. ● 批 流 合 并 . Same engine. Same APIs. Same user code. 无需如 Lambda架构同时使用批流处理. ● 高 效 增 量 数 据 载 入. 无需对是否有新文件加入做状态管理 [e.g., Structured Streaming’s Trigger.Once] ● 快 速 无 延 迟 流 处 理. [Trigger.ProcessingTime, Continuous] ● 简单修改即可将批处理转换成持续流处理 #1. 持 续 数 据 流
  • 50. 按 需 物 化 Dataframes; 特 别 当 需 要 大 量 数 据 转 换 (transformations). 物 化 (materialization) 的 目 的: ● 容 错 恢 复 #2.物化中间结果 T1 T1 T2 T2 T3 T3 T4 T5 T6 T7 Source Table Dest Tables 存 于 内 存 的 中 间 结 果 ● 一写多读● 方 便 故 障 排 查
  • 51. T1 T2 T3 T4 T5 T6 T7 落地的中间结果 #2.物化中间结果 按 需 物 化 Dataframes; 特 别 当 需 要 大 量 数 据 转 换 (transformations). 物 化 (materialization) 的 目 的: ● 容 错 恢 复 ● 一写多读● 方 便 故 障 排 查
  • 53. 1. 流处理; 持续 数据流入和处理. 无需作业调度管理 [Trigger.ProcessingTime, Continuous] #3. 费用与延迟的取舍 Data Lake AI & Reporting Streaming Analytics Business-level Aggregates Filtered, Cleaned Augmented Raw Ingestion Bronze Silver Gold CSV, JSON, TXT… Kinesis *Data Quality Levels *
  • 54. 1. 流处理; 持续 数据流入和处理: 需要永远在线的 clusters 2. 频繁批处理; 分钟级数据流入和处理(比如, 每半小时一次): 需要 a warm pool of machines. 无事关机,按需启动. 可使用 Spark streaming 的 Trigger.Once 模式 [incremental processing]. 3. 非频繁批处理; 若干小时或若干天的数据批流入和处理: 无 事关机,按需启动. 可使用 Spark streaming 的 Trigger.Once 模式 [incremental processing]. #3. 费用与延迟的取舍
  • 55. 根据常用查询的predicate,为改善读取速度,可优化数据的物 理存储: ● Partitioning on low cardinality 列 (确保每个partition 大于 1GB). ○ partitionBy(date, eventType). // 仅 有 100 个 不 同 event types ● Z-Ordering on high cardinality 列 ○ optimize table ZORDER BY userId. // 1 个 亿 的 不 同 user ids #4. 优化数据的物理存储
  • 56. 长期保留原始数据(raw data) + stream = 廉价的重处理 • 仅需要删除目标表,重启流处理 • 利用云的弹性计算 (cloud elasticity) 快速处理初始回填 (initial backfill) #5. 重新处理历史数据 . . .
  • 57. ● 原始数据表的schemas 做自动合并: 可以确保永远捕获最初的 events 而不丢失任何数据. ● 数据写入时强制 schema 限制和data expectations: 逐阶段改善数 据质量,直到数据质量达到数据分析的需求 #6. 数据质量的调整 Data Lake AI & Reporting Streaming Analytics Business-level Aggregates Filtered, Cleaned Augmented Raw Ingestion Bronze Silver Gold CSV, JSON, TXT… Kinesis Quality *Data Quality Levels *
  • 58. ● 支持批处理和标准DML: #6. 数据质量的调整 Data Lake AI & Reporting Streaming Analytics Business-level Aggregates Filtered, Cleaned Augmented Raw Ingestion Bronze Silver Gold CSV, JSON, TXT… Kinesis Quality • Retention • Corrections • GDPR • UPSERTS INSERT UPDATE DELETE MERGE OVERWRITE
  • 59. • 持续的数据流入和处理 [再无Lambda架构的批流分离] • 物化中间结果来改善可靠性和方便故障排查 • 基于用户使用场景和商业需求做费用与延迟的取舍 • 根据查询的常用模式来优化数据的物理存储 • 历史数据的再处理只需要删除结果table 重启流处理 • 通过调整schema management, data expectations and UPDATE/DELETE/MERGE 来一步一步地改善数据 质量,直到数据可以被用于分析 关键特性
  • 60. 1. 减少端到端的pipeline SLA. 多个使用单位把data pipeline 的 SLA 从小时减少到分钟级别 2. 减少pipeline 的维护成本 避免了为了达到分钟级别的用例延迟而引入 lambda 架构 3. 更容易的处理数据更新和删除. 简化了Change data capture, GDPR, Sessionization, 数据去冗 4. 通过计算和存储的分离和可弹缩而降低了infrastructure 的费用 多个使用单位将infrastructure的费用降低了超过十倍 Delta 架构的优点
  • 61. Delta 架 构 的 经 典 案 例
  • 62. Improved reliability: Petabyte-scale jobs 10x lower compute: 640 服 务 器 → 64! Simpler, faster ETL: 84 jobs → 3 jobs halved data latency
  • 63. Easier transactional updates: No downtime or consistency issues! Simple CDC: Easy with MERGE Improved performance: Queries run faster 大 于 一 小 时 → 少 于 六 秒
  • 64. 自我介绍 64 Databricks Cluster Data consistency and integrity: not available before Increased data quality: name match accuracy up 80% → 95% Faster data loads: 一 天 → 二十分钟
  • 65. Instead of parquet … … simply say delta dataframe .write .format("parquet") .save("/data") dataframe .write .format("delta") .save("/data")
  • 66. pyspark --packages io.delta:delta-core_2.12:0.4.0 bin/spark-shell --packages io.delta:delta-core_2.12:0.4.0 Add Spark Package <dependency> <groupId>io.delta</groupId> <artifactId>delta-core_2.12</artifactId> <version>0.4.0</version> </dependency> Maven
  • 69. 自我介绍 Delta Lake Roadmap Releases Features 0.2.0 • Cloud storage support • Improved concurrency 0.3.0 • Scala/Java APIs for DML commands • Scala/Java APIs for query commit history • Scala/Java APIs for vacuuming old files 0.4.0 • Python APIs for DML and utility operations • In-place Conversion of Parquet to Delta Lake table Q4 • Enable Hive support reading Delta tables • SQL DML support with Spark 3.0 • And more
  • 70. Delta Lake Community 2+ Exabytes of Delta Read/Writes per month 3700+ Orgs using Delta 0 5,000 10,000 15,000 20,000 M arch April M ay June July AugustSeptem ber
  • 71. 自我介绍 踊跃参加 Delta Lake 社区 今天就开始造属于你的Delta Lake! https://delta.io/ Slack Channel: delta-users.slack.com Mailing List: groups.google.com/forum/#!forum/delta-users
  • 73. 李潇 (lixiao AT databricks.com)
  • 74. Unified data analytics platform for accelerating innovation across data science, data engineering, and business analytics Original creators of popular data and machine learning open source projects Global company with 5,000 customers and 450+ partners