成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

DeltaLake如何實(shí)現(xiàn)CDC實(shí)時(shí)入湖

Delta Lake如何實(shí)現(xiàn)CDC實(shí)時(shí)入湖,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

創(chuàng)新互聯(lián)建站專注于蒲縣企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,電子商務(wù)商城網(wǎng)站建設(shè)。蒲縣網(wǎng)站建設(shè)公司,為蒲縣等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站建設(shè),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)

什么是CDC

Change Data Capture(CDC)用來(lái)跟蹤捕獲數(shù)據(jù)源的數(shù)據(jù)變化,并將這些變化同步到目標(biāo)存儲(chǔ)(如數(shù)據(jù)湖或數(shù)據(jù)倉(cāng)庫(kù)),用于數(shù)據(jù)備份或后續(xù)分析,同步過(guò)程可以是分鐘/小時(shí)/天等粒度,也可以是實(shí)時(shí)同步。CDC方案分為侵入式(intrusive manner)和非傾入性(non-intrusive manner)兩種。

Delta Lake如何實(shí)現(xiàn)CDC實(shí)時(shí)入湖

侵入式

侵入式方案直接請(qǐng)求數(shù)據(jù)源系統(tǒng)(如通過(guò)JDBC讀取數(shù)據(jù)),會(huì)給數(shù)據(jù)源系統(tǒng)帶來(lái)性能壓力。常見(jiàn)的方案如下:

  • 最后更新時(shí)間(Last Modified)

源表需要有修改時(shí)間列,同步作業(yè)需要指定最后修改時(shí)間參數(shù),表明同步某個(gè)時(shí)間點(diǎn)之后變更的數(shù)據(jù)。該方法不能同步刪除記錄的變更,同一條記錄多次變更只能記錄最后一次。

  • 自增id列

源表需要有一個(gè)自增id列,同步作業(yè)需要指定上次同步的最大id值,同步上次之后新增的記錄行。該方法也不能同步刪除記錄的變更,而且老記錄的變更也無(wú)法感知。

非侵入式

非侵入性一般通過(guò)日志的方式記錄數(shù)據(jù)源的數(shù)據(jù)變化(如數(shù)據(jù)庫(kù)的binlog),源庫(kù)需要開(kāi)啟binlog的功能。數(shù)據(jù)源的每次操作都會(huì)被記錄到binlog中(如insert/update/delete等),能夠?qū)崟r(shí)跟蹤數(shù)據(jù)插入/刪除/數(shù)據(jù)多次更新/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";

通過(guò)將binlog日志有序的回放到目標(biāo)存儲(chǔ)中,從而實(shí)現(xiàn)對(duì)數(shù)據(jù)源的數(shù)據(jù)導(dǎo)出同步功能。

常見(jiàn)的CDC方案實(shí)現(xiàn)

開(kāi)源常見(jiàn)的CDC方案實(shí)現(xiàn)主要有兩種:

Sqoop離線同步

sqoop是一個(gè)開(kāi)源的數(shù)據(jù)同步工具,它可以將數(shù)據(jù)庫(kù)的數(shù)據(jù)同步到HDFS/Hive中,支持全量同步和增量同步,用戶可以配置小時(shí)/天的調(diào)度作業(yè)來(lái)定時(shí)同步數(shù)據(jù)。

sqoop增量同步是一種侵入式的CDC方案,支持Last Modified和Append模式。
Delta Lake如何實(shí)現(xiàn)CDC實(shí)時(shí)入湖

缺點(diǎn):

  • 直接jdbc請(qǐng)求源庫(kù)拉取數(shù)據(jù),影響源庫(kù)性能

  • 小時(shí)/天調(diào)度,實(shí)時(shí)性不高

  • 無(wú)法同步源庫(kù)的刪除操作,Append模式還不支持?jǐn)?shù)據(jù)更新操作

binlog實(shí)時(shí)同步

binlog日志可以通過(guò)一些工具實(shí)時(shí)同步到kafka等消息中間件中,然后通過(guò)Spark/Flink等流引擎實(shí)時(shí)的回放binlog到目標(biāo)存儲(chǔ)(如Kudu/HBase等)。

缺點(diǎn):

  • Kudu/HBase運(yùn)維成本高

  • Kudu在數(shù)據(jù)量大的有穩(wěn)定性問(wèn)題, HBase不支持高吞吐的分析

  • Spark Streaming實(shí)現(xiàn)回放binlog邏輯復(fù)雜,使用java/scala代碼具有一定門檻

Streaming SQL+Delta Lake實(shí)時(shí)入湖方案

前面介紹了兩種常見(jiàn)的CDC方案,各自都有一些缺點(diǎn)。阿里云E-MapReduce團(tuán)隊(duì)提供了一種新的CDC解決方案,利用自研的Streaming SQL搭配Delta Lake可以輕松實(shí)現(xiàn)CDC實(shí)時(shí)入湖。這套解決方案同時(shí)通過(guò)阿里云最新發(fā)布的數(shù)據(jù)湖構(gòu)建(Data Lake Formation,DLF)服務(wù)提供一站式的入湖體驗(yàn)。

Delta Lake如何實(shí)現(xiàn)CDC實(shí)時(shí)入湖

Streaming SQL

Spark Streaming SQL在Spark Structured Streaming之上提供了SQL能力,降低了實(shí)時(shí)業(yè)務(wù)開(kāi)發(fā)的門檻,使得離線業(yè)務(wù)實(shí)時(shí)化更簡(jiǎn)單方便。

下面以實(shí)時(shí)消費(fèi)SLS為例:

# 創(chuàng)建loghub源表
spark-sql> CREATE TABLE loghub_intput_tbl(content string)
         > USING loghub
         > OPTIONS
         > (...) 
# 創(chuàng)建delta目標(biāo)表
spark-sql> CREATE TABLE delta_output_tbl(content string)
         > USING delta
         > OPTIONS
         > (...);
# 創(chuàng)建流式SCAN
spark-sql> CREATE SCAN loghub_table_intput_test_stream
         > ON loghub_intput_tbl
         > USING STREAM;
# 將loghub源表數(shù)據(jù)插入delta目標(biāo)表         
spark-sql> INSERT INTO delta_output_tbl SELECT content FROM loghub_table_intput_test_stream;

Delta Lake

Delta Lake是Databricks開(kāi)源的一種數(shù)據(jù)湖格式,它在parquet格式之上,提供了ACID事務(wù)/元數(shù)據(jù)管理等能力,同時(shí)相比parquet具有更好的性能,能夠支持更豐富的數(shù)據(jù)應(yīng)用場(chǎng)景(如數(shù)據(jù)更新/schema演化等)。

Delta Lake如何實(shí)現(xiàn)CDC實(shí)時(shí)入湖

E-MapReduce團(tuán)隊(duì)在開(kāi)源Delta Lake基礎(chǔ)上做了很多功能和性能的優(yōu)化,如小文件合并Optimize/DataSkipping/Zorder,SparkSQL/Streaming SQL/Hive/Presto深度集成Delta等。

Streaming SQL+Delta Lake CDC實(shí)時(shí)入湖

Spark Streaming SQL提供了Merge Into 的語(yǔ)法,搭配Delta Lake的實(shí)時(shí)寫入能力,可以很方便的實(shí)現(xiàn)CDC實(shí)時(shí)入湖方案。

Delta Lake如何實(shí)現(xiàn)CDC實(shí)時(shí)入湖

如上圖所示,只需要SQL就能完成CDC實(shí)時(shí)入湖。

看完上述內(nèi)容,你們掌握Delta Lake如何實(shí)現(xiàn)CDC實(shí)時(shí)入湖的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

文章名稱:DeltaLake如何實(shí)現(xiàn)CDC實(shí)時(shí)入湖
網(wǎng)址分享:http://jinyejixie.com/article4/jjhpoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、網(wǎng)站導(dǎo)航、做網(wǎng)站、面包屑導(dǎo)航、網(wǎng)站設(shè)計(jì)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)
南投县| 嘉峪关市| 鹰潭市| 彩票| 日喀则市| 桂东县| 临漳县| 赫章县| 周口市| 高陵县| 浮山县| 滨海县| 兴义市| 来宾市| 眉山市| 平安县| 晋城| 阿拉善盟| 林甸县| 德清县| 武冈市| 溧阳市| 巴彦淖尔市| 新巴尔虎左旗| 叶城县| 巴中市| 漳平市| 姜堰市| 巴彦淖尔市| 天气| 温宿县| 思茅市| 辽宁省| 无锡市| 田东县| 喀喇沁旗| 云浮市| 泽库县| 康平县| 绥化市| 当涂县|