雲小課|MRS基礎原理之Hudi介紹

来源:https://www.cnblogs.com/huaweiyun/archive/2022/10/28/16836575.html
-Advertisement-
Play Games

閱識風雲是華為雲信息大咖,擅長將複雜信息多元化呈現,其出品的一張圖(雲圖說)、深入淺出的博文(雲小課)或短視頻(雲視廳)總有一款能讓您快速上手華為雲。更多精彩內容請單擊此處。 摘要:Hudi是數據湖的文件組織層,對Parquet格式文件進行管理提供數據湖能力,支持多種計算引擎。 本文分享自華為雲社區 ...


閱識風雲是華為雲信息大咖,擅長將複雜信息多元化呈現,其出品的一張圖(雲圖說)、深入淺出的博文(雲小課)或短視頻(雲視廳)總有一款能讓您快速上手華為雲。更多精彩內容請單擊此處。

摘要:Hudi是數據湖的文件組織層,對Parquet格式文件進行管理提供數據湖能力,支持多種計算引擎。

本文分享自華為雲社區《【雲小課】EI第39課 MRS基礎原理之Hudi介紹》,作者:Hello EI 。

Hudi是數據湖的文件組織層,對Parquet格式文件進行管理提供數據湖能力,支持多種計算引擎,提供IUD介面,在 HDFS的數據集上提供了插入更新和增量拉取的流原語。

Hudi結構

Hudi的架構如圖1-1所示。

Hudi支持兩種表類型

Copy On Write

寫時複製表也簡稱cow表,使用parquet文件存儲數據,內部的更新操作需要通過重寫原始parquet文件完成。

  • 優點:讀取時,只讀取對應分區的一個數據文件即可,較為高效。
  • 缺點:數據寫入的時候,需要複製一個先前的副本再在其基礎上生成新的數據文件,這個過程比較耗時。且由於耗時,讀請求讀取到的數據相對就會滯後。

Merge On Read

讀時合併表也簡稱mor表,使用列格式parquet和行格式Avro兩種方式混合存儲數據。其中parquet格式文件用於存儲基礎數據,Avro格式文件(也可叫做log文件)用於存儲增量數據。

  • 優點:由於寫入數據先寫delta log,且delta log較小,所以寫入成本較低。
  • 缺點:需要定期合併整理compact,否則碎片文件較多。讀取性能較差,因為需要將delta log和老數據文件合併。

Hudi支持三種視圖,針對不同場景提供相應的讀能力

Snapshot View

實時視圖:該視圖提供當前hudi表最新的快照數據,即一旦有最新的數據寫入hudi表,通過該視圖就可以查出剛寫入的新數據。

cow表和mor均支持這種視圖能力。

Incremental View

增量視圖:該視圖提供增量查詢的能力,可以查詢指定COMMIT之後的增量數據,可用於快速拉取增量數據。

cow表支持該種視圖能力, mor表也可以支持該視圖,但是一旦mor表完成compact操作其增量視圖能力消失。

Read Optimized View

讀優化視圖:該視圖只會提供最新版本的parquet文件中存儲的數據。

該視圖在cow表和mor表上表現不同:

  • 對於cow表,該視圖能力和實時視圖能力是一樣的(cow表只用parquet文件存數據)。
  • 對於mor表,僅訪問基本文件,提供給定文件片自上次執行compact操作以來的數據, 可簡單理解為該視圖只會提供mor表parquet文件存儲的數據,log文件裡面的數據將被忽略。 該視圖數據並不一定是最新的,但是mor表一旦完成compact操作,增量log數據被合入到了base數據裡面,這個時候該視圖和實時視圖能力一樣。

如何使用Hudi

目前Hudi集成在Spark2x中,使用Hudi需要安裝Spark2x組件,並安裝Spark2x的客戶端。

  • MRS集群的創建可參考MRS快速入門中的“創建集群”章節,例如購買MRS 3.1.0版本集群。
  • 安裝Spark2x客戶端,可參考MRS用戶指南中的“安裝客戶端”章節,例如客戶端安裝目錄為:“/opt/client”。
  • 安全模式(開啟Kerberos認證)集群,在使用Hudi時,需要創建一個具有訪問Hudi許可權的用戶,可參考MRS用戶指南中的“創建用戶”章節,用戶組選擇hadoop、hive和supergroup,主組選擇hadoop,角色選擇System_administrator,例如創建人機用戶“testuser”。

1.使用root用戶登錄集群客戶端節點,執行如下命令:

cd /opt/client
source bigdata_env
source Hudi/component_env
kinit testuser

2.執行以下命令進入Spark SQL命令行。

spark-sql --master yarn

3.準備Hive數據表。

drop table if exists hivetb_text;
create table hivetb_text (id int, comb long, name string, dt date) row format delimited fields terminated by ',' stored as textfile;
insert into hivetb_text values (3,301,'0003','2021-09-11'),(4,400,'0004','2021-09-11');

4.創建Hudi Cow分區表。

drop table if exists hudi_test1;
create table hudi_test1 (id int, comb long, name string, dt date) using hudi partitioned by (dt) options(type='cow',primaryKey='id', preCombineField='comb');

5.執行insert,插入數據,並查詢結果。

insert into hudi_test1 values (1,100,'aaa','2021-08-28'),(2,200,'bbb','2021-08-28');
insert into hudi_test1 select 3,300,'ccc','2021-09-11';
select id,comb,dt,name from hudi_test1;

6.執行update,更新數據,並查詢結果。

update hudi_test1 set name='0001' where id = 1;
select id,comb,dt,name from hudi_test1;

7.執行delete,刪除數據,並查詢結果。

delete from hudi_test1 where id = 2;
select id,comb,dt,name from hudi_test1;

8.執行merge,寫入增量數據,並查詢結果。

merge into hudi_test1 t1 using hivetb_text t2 on t1.id = t2.id
when matched then update set id=t2.id, comb=t2.comb, name='aaaa', dt=t2.dt
when not matched then insert *;
select id,comb,dt,name from hudi_test1;

好了,本期雲小課就介紹到這裡,快去體驗MapReduce(MRS)更多功能吧!猛戳這裡

 

點擊關註,第一時間瞭解華為雲新鮮技術~


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 嗨嘍,大家好呀~這裡是愛看美女的茜茜吶 又到了學Python時刻~ 今天再分享一個騷操作:Python自動安裝第三方庫,全自動不需要你動! 再也不怕在自己安裝得時候不得要領,報錯了~懶人必備吖 pip手動安裝 一說Python要安裝哪個模塊,我們第一反應,win+r 輸入cmd,pip ins ...
  • 傳送地址:https://www.luogu.com.cn/problem/P4306 題目描述 度量一個有向圖連通情況的一個指標是連通數,指圖中可達頂點對個的個數。 如圖 頂點 11 可達 1, 2, 3, 4, 51,2,3,4,5 頂點 22 可達 2, 3, 4, 52,3,4,5 頂點 3 ...
  • 1、mysql 基本操作 Windows-->Mysql5.7打開 輸入用戶名和密碼 查看資料庫 :show databases;查詢所有資料庫,記住一定要加分號結尾 這裡必須全部為 英文空格 英文符號 選擇 day4_6資料庫:use day4_6; 查看這個資料庫的所有表: show table ...
  • 哈佛大學CS50系列課程分支之一,結合Python編程語言,探討現代人工智慧的基礎概念和演算法,深入探討對游戲引擎、手寫識別和機器翻譯等技術的理解和思考。 ...
  • 目錄 一.前言 二.OpenGL ES 上下文 三.OpenGL ES 狀態機 四.緩存 五.渲染 六.紋理 七.光柵化 Rasterization 八.片元著色器 九.頂點著色器 十.著⾊語言 GLSL 十一.著色器使用流程 十二.著色器的渲染流程 十三.猜你喜歡 零基礎 OpenGL ES 學習 ...
  • 摘要:本文結合圖解和問題,教你一次性搞定HashMap 本文分享自華為雲社區《java中HashMap的設計精妙在哪?用圖解和幾個問題教你一次性搞定HashMap》,作者:breakDawn。 HashMap核心原理 HashMap完整的put過程 以下是對上圖的詳細解釋: 首先,要獲取key的哈希 ...
  • 各位好啊,我是會編程的蝸牛,作為java開發者,我們都是需要接觸Linux伺服器的,一般部署應用都是部署在Linux伺服器上的~ 但一般的伺服器要麼需要購買,要麼只是公司里的,那麼有沒有免費的Linux可以讓我們自己使用呢?答案是,有的。 我們可以在自己的電腦上安裝一個虛擬機,然後就可以在虛擬機裡面... ...
  • 更多技術文章,請關註我的個人博客 www.immaxfang.com 和小公眾號 Max的學習札記。 Redis 事務簡介 Redis 只是提供了簡單的事務功能。其本質是一組命令的集合,事務支持一次執行多個命令,在事務執行過程中,會順序執行隊列中的命令,其他客戶端提交的命令請求不會插入到本事務執行命 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...