在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

Delta Lake如何实现CDC实时入湖

139次阅读
没有评论

共计 2387 个字符,预计需要花费 6 分钟才能阅读完成。

Delta Lake 如何实现 CDC 实时入湖,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

什么是 CDC

Change Data Capture(CDC)用来跟踪捕获数据源的数据变化,并将这些变化同步到目标存储 (如数据湖或数据仓库),用于数据备份或后续分析,同步过程可以是分钟 / 小时 / 天等粒度,也可以是实时同步。CDC 方案分为侵入式(intrusive manner) 和非倾入性 (non-intrusive manner) 两种。

侵入式

侵入式方案直接请求数据源系统(如通过 JDBC 读取数据),会给数据源系统带来性能压力。常见的方案如下:

最后更新时间(Last Modified)

源表需要有修改时间列,同步作业需要指定最后修改时间参数,表明同步某个时间点之后变更的数据。该方法不能同步删除记录的变更,同一条记录多次变更只能记录最后一次。

自增 id 列

源表需要有一个自增 id 列,同步作业需要指定上次同步的最大 id 值,同步上次之后新增的记录行。该方法也不能同步删除记录的变更,而且老记录的变更也无法感知。

非侵入式

非侵入性一般通过日志的方式记录数据源的数据变化(如数据库的 binlog),源库需要开启 binlog 的功能。数据源的每次操作都会被记录到 binlog 中(如 insert/update/delete 等),能够实时跟踪数据插入 / 删除 / 数据多次更新 /DDL 操作等。

示例:

insert into table testdb.test values(hangzhou ,1);update testdb.test set b=2 where a= hangzhou update testdb.test set b=3 where a= hangzhou delete from testdb.test where a= hangzhou

通过将 binlog 日志有序的回放到目标存储中,从而实现对数据源的数据导出同步功能。

常见的 CDC 方案实现

开源常见的 CDC 方案实现主要有两种:

Sqoop 离线同步

sqoop 是一个开源的数据同步工具,它可以将数据库的数据同步到 HDFS/Hive 中,支持全量同步和增量同步,用户可以配置小时 / 天的调度作业来定时同步数据。

sqoop 增量同步是一种侵入式的 CDC 方案,支持 Last Modified 和 Append 模式。

缺点:

直接 jdbc 请求源库拉取数据,影响源库性能

小时 / 天调度,实时性不高

无法同步源库的删除操作,Append 模式还不支持数据更新操作

binlog 实时同步

binlog 日志可以通过一些工具实时同步到 kafka 等消息中间件中,然后通过 Spark/Flink 等流引擎实时的回放 binlog 到目标存储(如 Kudu/HBase 等)。

缺点:

Kudu/HBase 运维成本高

Kudu 在数据量大的有稳定性问题, HBase 不支持高吞吐的分析

Spark Streaming 实现回放 binlog 逻辑复杂,使用 java/scala 代码具有一定门槛

Streaming SQL+Delta Lake 实时入湖方案

前面介绍了两种常见的 CDC 方案,各自都有一些缺点。阿里云 E -MapReduce 团队提供了一种新的 CDC 解决方案,利用自研的 Streaming SQL 搭配 Delta Lake 可以轻松实现 CDC 实时入湖。这套解决方案同时通过阿里云最新发布的数据湖构建(Data Lake Formation,DLF)服务提供一站式的入湖体验。

Streaming SQL

Spark Streaming SQL 在 Spark Structured Streaming 之上提供了 SQL 能力,降低了实时业务开发的门槛,使得离线业务实时化更简单方便。

下面以实时消费 SLS 为例:

#  创建 loghub 源表
spark-sql  CREATE TABLE loghub_intput_tbl(content string)
   USING loghub
   OPTIONS
   (...) 
#  创建 delta 目标表
spark-sql  CREATE TABLE delta_output_tbl(content string)
   USING delta
   OPTIONS
   (...);
#  创建流式 SCAN
spark-sql  CREATE SCAN loghub_table_intput_test_stream
   ON loghub_intput_tbl
   USING STREAM;
#  将 loghub 源表数据插入 delta 目标表  
spark-sql  INSERT INTO delta_output_tbl SELECT content FROM loghub_table_intput_test_stream;

Delta Lake

Delta Lake 是 Databricks 开源的一种数据湖格式,它在 parquet 格式之上,提供了 ACID 事务 / 元数据管理等能力,同时相比 parquet 具有更好的性能,能够支持更丰富的数据应用场景(如数据更新 /schema 演化等)。

E-MapReduce 团队在开源 Delta Lake 基础上做了很多功能和性能的优化,如小文件合并 Optimize/DataSkipping/Zorder,SparkSQL/Streaming SQL/Hive/Presto 深度集成 Delta 等。

Streaming SQL+Delta Lake CDC 实时入湖

Spark Streaming SQL 提供了 Merge Into 的语法,搭配 Delta Lake 的实时写入能力,可以很方便的实现 CDC 实时入湖方案。

如上图所示,只需要 SQL 就能完成 CDC 实时入湖。

看完上述内容,你们掌握 Delta Lake 如何实现 CDC 实时入湖的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注丸趣 TV 行业资讯频道,感谢各位的阅读!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计2387字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 欧美日韩一日韩一线不卡 | 特级毛片免费观看视频 | 国产一区在线播放 | 国产成人综合网亚洲欧美在线 | 国产成人a v在线影院 | 男女性爽大片视频 | 亚洲精品无码久久 | 99视 | 国产精品无码久久四虎 | 人妻熟女一区二区三区app下载 | 亚洲深深色噜噜狠狠爱网站 | 四虎国产精品永免费 | 丰满熟妇被猛烈进入高清片 | 成人 在线播放 | 亚洲欧洲国产成人精品 | 国产婷婷综合在线精品尤物 | 国产亚洲日韩欧美一区二区三区 | 四虎国产精品免费久久影院 | 亚洲欧美综合另类 | 亚洲国产最新在线一区二区 | 国产精品色内内在线播放 | 国产爆乳美女娇喘呻吟 | 一区二区三区免费视频播放器 | 香港日本三级亚洲三级 | 国产精品久久久久精 | 在线不卡一区二区三区日韩 | 久久国产精品歌舞团 | 国产成人精品2021 | 国产男女猛烈无遮挡免费视频网站 | 无码日韩精品一区二区三区免费 | 高清一区高清二区视频 | 国产福利一区二区精品免费 | 亚洲精品国产高清不卡在线 | 最近中文字幕在线看免费完整版 | 欧美视频在线观看免费 | 亚洲无线码一区二区三区在线观看 | 国产91在线播放边 | 操一操| 精品伊人久久久大香线蕉天堂 | 无码人妻久久一区二区三区蜜桃 | 日韩一区二区中文字幕 |