CloudCanal x Hive 構建高效的實時數倉

簡述

CloudCanal 最近對于全周期數據流動進行了初步探索,打通了Hive 目標端的實時同步,為實時數倉的構建提供了支持,這篇文章簡要做下分享。

  • 基于臨時表的增量合并方式
  • 基于 HDFS 文件寫入方式
  • 臨時表統一 Schema
  • 任務級的臨時表

基于臨時表的增量合并方式

Hive 目標端寫入方式和 Doris 相似,需要在目標表上額外添加一個 __op(0:UPSERT,1:DELETE)字段作為標記位,實際寫入時會先將源端的變更先寫入臨時表,最終合并到實際表中。

CloudCanal 的設計核心在于,每個同步表對應兩張臨時表,通過交替合并的方式,確保在一張臨時表進行合并時,另一張能夠接收新變更,從而提升同步效率和并發性。

image.png

Hive 提供了兩種合并方式:INSERT OVERWRITE(所有版本均支持),MERGE INTO(Hive 2.2.0 之后支持且需要是 ACID 表)

-- INSERT OVERWRITE 語法
INSERT OVERWRITE [LOCAL] DIRECTORY directory1[ROW FORMAT row_format] [STORED AS file_format]
SELECT ... FROM ...-- MERGE INTO 語法
MERGE INTO <target table > AS T USING < source expression / table > AS S
ON <boolean expression1>WHEN MATCHED [AND <boolean expression2>] THEN
UPDATE SET <set clause list>WHEN MATCHED [AND <boolean expression3>] THEN
DELETEWHEN NOT MATCHED [AND <boolean expression4>] THEN INSERT VALUES<value list>

任務級的臨時表

在大數據場景下,多表匯聚的情況十分普遍,CloudCanal 在構建臨時表時,利用源端的訂閱 Schema Table 信息,創建不同的臨時表。

通過這種方式,無論是相同或不同的任務、相同或不同的 Schema(源端)、相同或不同的 Table(源端),都能將數據寫入不同的臨時表,最終合并到同一個實際表中,互相之間不會產生影響。

image.png

基于 HDFS 文件的寫入方式

Hive 是建立在 Hadoop 體系上的數據倉庫,而實際的數據存儲在 HDFS 中。

如果直接通過 HQL 將增量數據寫入 Hive,Hive 會將 HQL 轉化為 MR Job,由于每一個 MR Job 處理速度相對較慢,這將導致增量性能極其差。

CloudCanal 在進行數據寫入的時候,選擇的是繞過 Hive 這層,直接寫入 HDFS 文件系統。

目前支持 HDFS 文件格式:Text、Orc、Parquet。

臨時表統一 Schema

基于臨時表構建的增量方式,如果臨時表分散在不同的 Schema 中,將給 DBA 的管理帶來不便。

為了簡化管理,CloudCanal 將所有臨時表構建在統一的 Schema 下,并允許用戶自定義其臨時表路徑。

示例

準備 CloudCanal

  • 下載安裝 CloudCanal 私有部署版本

添加數據源

  • 數據源管理 -> 添加數據源, 添加 MySQL、Hive

    image.png
    image.png

創建同步任務

  • 選擇源端 MySQL 和目標端 Hive,同步的 SchemaTable,高級參數含義參考 MySQL -> Hive

    image.png

  • 任務創建第四步,點擊 配置分區鍵

  • 選擇 分區鍵類型 以及 HDFS 文件類型

    image.png
    image.png

  • 點擊下一步,創建任務即可

    image.png

未來方向

文件 Append 寫入方式

目前 HDFS 文件寫入處理,是每批數據寫到一個文件中,并不會處理歷史數據文件,更加合理的方式是基于歷史文件進行 Append
追加,寫滿之后再切換為下一個文件。

提供參數優化 MR 處理速度

目前 CloudCanal 并沒有提供參數入口用于優化 MR 處理速度,而是自動使用用戶所配置的,未來 CloudCanal 將提供一個參數入口用于用戶自定義每一個
MR Job 的處理并行度等優化參數。

支持 MERGE INTO 合并方式

目前 CloudCanal 僅支持 INSERT OVERWRITE 的合并方式,這種方式更為通用,而 MERGE INTO 此種合并方式速度更快,但限制較多,未來
CloudCanal 也會支持此種合并方式。

支持自定義分區鍵

目前 CloudCanal 僅支持按照日期選擇分區鍵,目前暫時不支持更多分區鍵的選擇,未來 CloudCanal 會提供更多分區鍵的選擇。

總結

本篇文章簡單介紹 CloudCanal 對于全生命周期的數據流動的初步探索,并通過 MySQL -> Hive 示例介紹其使用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/713774.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/713774.shtml
英文地址,請注明出處:http://en.pswp.cn/news/713774.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Linux實踐室】Linux初體驗

&#x1f308;個人主頁&#xff1a;聆風吟 &#x1f525;系列專欄&#xff1a;Linux實踐室、網絡奇遇記 &#x1f516;少年有夢不應止于心動&#xff0c;更要付諸行動。 文章目錄 一. ??任務描述二. ??相關知識2.1 &#x1f514;Linux 目錄結構介紹2.2 &#x1f514;Linux …

WebFlux相關問題及答案(2024)

1、什么是Spring WebFlux&#xff1f; Spring WebFlux 是 Spring Framework 5.0 中引入的一個全新的反應式框架&#xff0c;用于構建異步、非阻塞且事件驅動的服務。它允許開發者使用響應式編程模型來處理并發性很高的操作&#xff0c;而無需擔心傳統的多線程環境中的復雜性。…

poi工具讀寫excel操作學習總結

寫在前面的話 POI作為比較早期的Excel處理工具&#xff0c;其使用較為成熟且廣泛。EasyExcel相較之下&#xff0c;則是相對較新的工具&#xff0c;其卻有著比POI更為優越的一些特性&#xff0c;如更加簡單的API接口和更加優秀的性能。 性能對比&#xff1a;在數據量較小的情況下…

mybatis mysql insert 主鍵id為空

錯誤示范 java代碼設置了param參數&#xff0c;但是sql 字段沒有帶上參數&#xff0c;例如 void insertV2(Param("historyDO") HistoryDO historyDO); <insert id"insertDuplicate" parameterType"com.test.entity.HistoryDO"keyProperty&…

MySQL:一行記錄如何

1、表空間文件結構 表空間由段「segment」、區「extent」、頁「page」、行「row」組成&#xff0c;InnoDB存儲引擎的邏輯存儲結構大致如下圖&#xff1a; 行 數據庫表中的記錄都是按「行」進行存放的&#xff0c;每行記錄根據不同的行格式&#xff0c;有不同的存儲結構。 頁…

hippy 調試demo運行聯調-mac環境準備篇

適用對于終端編譯環境不熟悉的人看&#xff0c;僅mac端 hippy 調試文檔官網地址 前提&#xff1a;請使用node16 聯調預覽效果圖&#xff1a; 編譯iOS Demo環境準備 未跑通&#xff0c;待補充 編譯Android Demo環境準備 1、正常安裝Android Studio 2、下載Android NDK&a…

Windows系統誤刪文件恢復

最近很多用戶反饋誤刪文件的場景比較多.下面華仔將講解數據恢復的原理和過程.以及一些注意事項。 建議的數據恢復軟件 1.EaseUS Data Recovery Wizard(易我數據恢復)需要斷網使用 2.Wondershare Recoverit(萬興數據恢復)&#xff0c; Windows系統刪除文件原理&#xff1a;如果是…

Android ShellUtils手機管理器

1. Android ShellUtils手機管理器 Android Shell工具類&#xff0c;可用于檢查系統root權限&#xff0c;并在shell或root用戶下執行shell命令。如&#xff1a; checkRootPermission() 檢查root權限 。execCommand(String[] commands, boolean isRoot, boolean isNeedResultMsg)…

HTTPS是什么,詳解它的加密過程

目錄 1.前言 2.兩種加密解密方式 2.1對稱加密 2.2非對稱加密 3.HTTPS的加密過程 3.1針對明文的對稱加密 3.2針對密鑰的非對稱加密 3.3證書的作用 1.前言 我們知道HTTP協議是超文本傳輸協議,它被廣泛的應用在客戶端服務器上,用來傳輸文字,圖片,視頻,js,html等.但是這種傳…

java數據結構與算法刷題-----LeetCode572. 另一棵樹的子樹(經典題,樹字符串化KMP)

java數據結構與算法刷題目錄&#xff08;劍指Offer、LeetCode、ACM&#xff09;-----主目錄-----持續更新(進不去說明我沒寫完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目錄 1. 暴力求解&#xff0c;深度優先2. KMP算法進行串匹配 1. 暴力求…

WinForm、Wpf自動升級 AutoUpdater.NET

Github AutoUpdater.NET 目錄 一、IIS部署 更新站點 二、創建Winform 一、IIS部署 更新站點 IIS默認站點目錄下創建 目錄 Downloads、Updates Updates目錄創建文件 UpdateLog.html、AutoUpdaterStarter.xml UpdateLog.html&#xff1a; <html><body><h1…

從零開始手寫RPC框架(2)——Netty入門

學習前需要掌握基本的java網絡編程&#xff0c;可參考這篇博客 目錄 Netty 簡介Netty 使用 kryo 序列化傳輸對象案例客戶端代碼服務端代碼編碼器 Netty 簡介 是什么&#xff1f; Netty 是一個基于 NIO (Non-blocking I/O&#xff0c;非阻塞I/O)的 client-server(客戶端服務器…

mysql學習--binlog與gtid主從同步

基礎環境 基于centOS7-MySQL8.0.35版本 我們先準備一臺主服務器兩臺從服務器來實現我們主從同步的訴求 Master&#xff1a;192.168.75.142 slave1:192.168.75.143 slave&#xff1a;192.168.75.145 binlog主從同步 主庫配置 #我們需要在主從庫中都需要添加server_id&am…

大龍談智能內容開通視頻號啦

大家好&#xff0c;大龍談只能內容開通視頻號了&#xff0c;歡迎大家掃碼關注&#xff1a;

RISC-V特權架構 - 中斷與異常概述

RISC-V特權架構 - 中斷與異常概述 1 中斷概述2 異常概述3 廣義上的異常3.1 同步異常3.2 異步異常3.3 常見同步異常和異步異常 本文屬于《 RISC-V指令集基礎系列教程》之一&#xff0c;歡迎查看其它文章。 1 中斷概述 中斷&#xff08;Interrupt&#xff09;機制&#xff0c;即…

RocketMQ安裝

mq服務端安裝配置啟動把windows做成服務 mq管理界面安裝配置啟動 mq服務端 安裝 RocketMQ下載地址 配置 ROCKETMQ_HOME D:\google-d\rocketmq-all-5.2.0-bin-release啟動 # bin目錄cmd輸入 start mqnamesrv.cmd把windows做成服務 http://t.csdnimg.cn/qd2RD mq管理界面 …

ubuntu22.04安裝mysql8.0

官網下載mysql&#xff1a;MySQL :: Download MySQL Community Server 將mysql-server_8.0.20-2ubuntu20.04_amd64.deb-bundle.tar上傳到/usr/local/src #解壓壓縮文件 tar -xvf mysql-server_8.0.20-2ubuntu20.04_amd64.deb-bundle.tar解壓依賴包依次輸入命令 sudo dpkg -i m…

編程筆記 Golang基礎 045 math包

編程筆記 Golang基礎 045 math包 一、math包主要功能常量&#xff1a;函數&#xff1a;數值運算&#xff1a;三角函數&#xff1a;對數函數&#xff1a;隨機數相關&#xff1a; 二、示例代碼一三、示例代碼二小結 Go 語言的標準庫 math 提供了一系列基礎數學函數和常量&#xf…

EasyRecovery數據恢復軟件2024最新版包括Windows和Mac

EasyRecovery數據恢復軟件適用于多種環境和使用場景。首先&#xff0c;它適用于各種操作系統&#xff0c;包括Windows和Mac。無論用戶使用的是哪種操作系統&#xff0c;都可以使用該軟件進行數據恢復。 其次&#xff0c;EasyRecovery支持從各種存儲設備和媒介中恢復數據&#…

自定義BeanNameGenerator生成規則

通過點進ComponentScan注解進入源碼可以看到 追隨BeanNameGenerator進入源碼可以看到該類是個借口且只有一個方法 點擊上面黑色箭頭出現兩個實現方法 點擊第一個方法 進入determineBeanNameFromAnnotation方法中 通過上訴自定義一個生成beanName方法 先創建一個CustomeBeanN…