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

Delta Lake如何实现CDC实时入湖

155次阅读
没有评论

共计 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字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 国产九九热视频 | 色综合中文综合网 | 国产精品久久久久久久伊一 | 精品视频在线观看免费 | 成年免费视频黄网站zxgk | 国产三级三级三级av精品 | 欧美视频在线看 | 精品国产一区二区三区av性色 | 国产麻豆免费观看91 | 在线成人毛片 | 熟妇人妻无码中文字幕老熟妇 | 男女一区二区三区免费 | 中文亚洲av片在线观看 | 欧美激情a∨在线视频播放 欧美激情第二页 | 午夜国产小视频 | 国产亚洲精品久久久久久打不开 | 一及黄色毛片 | 国产香蕉久久精品综合网 | 老司机精品99在线播放 | 黄色美女网站免费看 | 久久人妻av无码中文专区 | 青青草国产免费久久久91 | 欧美毛片在线播放观看 | 在线看精品| 免费观看国产网址你懂的 | 亚洲av无码久久 | 一个人免费观看的www在线 | 久久精品视频99精品视频150 | 99久久爱re热6在播放 | www.久草视频 | 日韩精品一区二三区中文 | 亚洲伦理 | 亚洲人成网7777777国产 | 亚洲av无码之国产精品 | 午夜理论片最新午夜理论剧 | 一本色道久久综合狠狠躁篇 | 粗壮挺进人妻水蜜桃成熟漫画 | 两个人看的www视频免费完整版 | 亚洲av无码av男人的天堂 | 国产精品∧v在线观看 | 视频一区视频二区在线观看 |