国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Flink Catalog 解讀與同步 Hudi 表元數(shù)據(jù)的最佳實(shí)踐

這篇具有很好參考價(jià)值的文章主要介紹了Flink Catalog 解讀與同步 Hudi 表元數(shù)據(jù)的最佳實(shí)踐。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Flink Catalog 解讀與同步 Hudi 表元數(shù)據(jù)的最佳實(shí)踐,大數(shù)據(jù)專題,flink,catalog,hudi,metastore,hive,共用表,元數(shù)據(jù) 博主歷時(shí)三年精心創(chuàng)作的《大數(shù)據(jù)平臺(tái)架構(gòu)與原型實(shí)現(xiàn):數(shù)據(jù)中臺(tái)建設(shè)實(shí)戰(zhàn)》一書(shū)現(xiàn)已由知名IT圖書(shū)品牌電子工業(yè)出版社博文視點(diǎn)出版發(fā)行,點(diǎn)擊《重磅推薦:建大數(shù)據(jù)平臺(tái)太難了!給我發(fā)個(gè)工程原型吧!》了解圖書(shū)詳情,京東購(gòu)書(shū)鏈接:https://item.jd.com/12677623.html,掃描左側(cè)二維碼進(jìn)入京東手機(jī)購(gòu)書(shū)頁(yè)面。

在當(dāng)前的大數(shù)據(jù)格局中,Spark / Hive / Flink 是最為主流的 ETL 或 Streaming 引擎,元數(shù)據(jù)方面,Hive Metastore 可以視為事實(shí)上的 Data Catalog 標(biāo)準(zhǔn),而在數(shù)據(jù)湖存儲(chǔ)格式上,又有 Hudi、Iceberg 這類新晉的框架,在這種復(fù)雜的格局下,用戶希望能它們之間能相互打通,以便能根據(jù)應(yīng)用場(chǎng)景靈活地選擇技術(shù)棧,同時(shí)又不會(huì)出現(xiàn)技術(shù)上的“隔離”,一個(gè)非常典型的例子是:當(dāng)我們選擇了 Hudi 作為數(shù)據(jù)湖的統(tǒng)一存儲(chǔ)格式后,我們希望不管是 Flink 還是 Spark (也包括 Hive)都能順利讀寫(xiě) Hudi 表,這也暗含著“元數(shù)據(jù)最好統(tǒng)一存儲(chǔ)在 Hive Metastore 中”這樣的訴求,這非常普遍且典型的一種用戶訴求,而我們這篇文章其實(shí)就是針對(duì)這個(gè)訴求給出解決方案。

1. Flink Catalog 的整體設(shè)計(jì)和各類具體實(shí)現(xiàn)


首先,我們要清楚地明白一點(diǎn):Flink 是有自己的、完全獨(dú)立的 Catalog 定義(接口)的,就像 Hive 設(shè)計(jì)并使用了自己的 Hive MetaStore 一樣。Flink 在自已統(tǒng)一的 Catalog 定義(接口)下,提供了多種不同的實(shí)現(xiàn),其實(shí)本質(zhì)的差別主要是存儲(chǔ)介質(zhì)上的差異:

  • ?? 默認(rèn) Catalog(GenericInMemoryCatalog)
    • 基于內(nèi)存,Session 結(jié)束時(shí),metadata 也會(huì)隨之丟失,下次再使用需要重新建庫(kù)、建表;
  • ?? 將元數(shù)據(jù)持久化到數(shù)據(jù)庫(kù)中 (JdbcCatalog)
    • 這就有點(diǎn)像 Hive Metastore 的實(shí)現(xiàn)方式了,但是要注意,只是性質(zhì)上類似,metadata 的 schema 肯定是不一樣的
  • ?? 將元數(shù)據(jù)持久化到 Hive Metastore 中(HiveCatalog)
    • 這種方式要注意理解,它是把 Hive Metastore 當(dāng)成了底層存儲(chǔ),通過(guò)調(diào)用 Hive Metastore 的 API 來(lái)讀寫(xiě) Flink 的 metadata;
    • 同時(shí),使用這種方式還能讀寫(xiě) Hive 中已有的 Hive 表,某種角度上看,有點(diǎn)類似在 Flink Catalog 和 Hive Metastore 之間做了“適配”;
    • 鑒于 Hive Metestore 在大數(shù)據(jù)生態(tài)中的核心位置,將 Flink 的元數(shù)據(jù)統(tǒng)一到 Hive 的 Metastore 上也是一種必然地選擇,不過(guò),F(xiàn)link Catalog 數(shù)據(jù)結(jié)構(gòu)畢竟與 Hive 的 Catalog 結(jié)構(gòu)有所不同,所以將大量 Flink 的 metadata 寫(xiě)入 Hive 會(huì)導(dǎo)致所謂的 “Hive 元數(shù)據(jù)污染” 問(wèn)題(參考:《Flink 實(shí)時(shí)計(jì)算平臺(tái)在知乎的演進(jìn)》)
  • ?? 用戶自定義 Catalog
    • 既然 Flink 的 Catalog 基于接口設(shè)計(jì)的,那么用戶自然可以開(kāi)發(fā)自己的 Catalog 實(shí)現(xiàn);
    • 對(duì)于那些擁有內(nèi)置元數(shù)據(jù)服務(wù)的數(shù)據(jù)湖框架,例如 Hudi 和 Iceberg,這是絕佳的元數(shù)據(jù)切入方式,通過(guò)這種形式,它們會(huì)開(kāi)發(fā)自己的 Flink Catalog 實(shí)現(xiàn),目的就在于為了和 Flink Catalog 機(jī)制無(wú)縫打通,讓 Flink 能很好的讀寫(xiě)這些格式內(nèi)置的元數(shù)據(jù),實(shí)際上,它們也確實(shí)這樣做了

下圖從本質(zhì)上(類的繼承關(guān)系)揭示了 Flink Catalog 的設(shè)計(jì)框架和各個(gè)實(shí)現(xiàn)之間的關(guān)系:

Flink Catalog 解讀與同步 Hudi 表元數(shù)據(jù)的最佳實(shí)踐,大數(shù)據(jù)專題,flink,catalog,hudi,metastore,hive,共用表,元數(shù)據(jù)

同樣的,下圖從更大的一個(gè)上下文中展示了 Flink 表種 Catalog 具體實(shí)現(xiàn)的工作場(chǎng)景:

Flink Catalog 解讀與同步 Hudi 表元數(shù)據(jù)的最佳實(shí)踐,大數(shù)據(jù)專題,flink,catalog,hudi,metastore,hive,共用表,元數(shù)據(jù)

2. Flink 讀寫(xiě) Hudi 表并同步至 Hive Metastore 的方法

存放 Hudi 的元數(shù)據(jù)有多種途徑,本著不再發(fā)明輪子的態(tài)度,這兩篇文章《Flink SQL操作Hudi并同步Hive使用總結(jié)》和 《Flink SQL通過(guò)Hudi HMS Catalog讀寫(xiě)Hudi并同步Hive表》已經(jīng)總結(jié)的非常全面和細(xì)致了,總結(jié)一下一共有以下幾種途徑:

① 在 Flink 的默認(rèn) Catalog 中創(chuàng)建 Hudi 表,不同步表格元數(shù)據(jù)到 Hive Metastore (不配置 hudi 表的 hive_sync.* 屬性)

這一方案 Spark 和 Hive 都讀取不到這張 Hudi 表,且 Flink 自己在 Session 關(guān)閉后也需要重新建表,所以,這一方案并沒(méi)有實(shí)用價(jià)值。

② 在 Flink 的 Hive Catalog 中創(chuàng)建 Hudi 表,不同步表格元數(shù)據(jù)到 Hive Metastore (不配置 hudi 表的 hive_sync.* 屬性)

這一方案是在 Flink SQL 中連通 Hive Metastore(即使用 HiveCatalog),直接在 Hive Metastore 中創(chuàng)建 Hudi 表,這樣,原則上,Spark / Hive 都能發(fā)現(xiàn)這張 Hudi 表,并對(duì)其進(jìn)行讀寫(xiě)。但實(shí)際上,使用在這種模式下,Spark / Hive 是不能正常讀寫(xiě) Hudi 表的,因?yàn)樵摲椒▌?chuàng)建的 Hudi 表寫(xiě)入了大量的 Flink 特有的 metadata,同時(shí)又缺少了 Hive / Spark 必要的 Hudi 表的屬性,所以 Spark / Hive 不能讀寫(xiě)這種方式創(chuàng)建的 Hudi 表。簡(jiǎn)單地說(shuō),在這種方式下,F(xiàn)link 只是將 Hive Metastore 當(dāng)做一種底層的元數(shù)據(jù)存儲(chǔ)服務(wù),所以寫(xiě)入的元數(shù)據(jù)都是 Flink Catalog 風(fēng)格的,并不會(huì)考慮任何與 Hive / Spark 元數(shù)據(jù)兼容的問(wèn)題,所以 Spark / Hive 讀不出這種方式創(chuàng)建的 Hudi 表就不難理解了。

③ 在 Flink 的默認(rèn) Catalog 中創(chuàng)建 Hudi 表,并同步表格元數(shù)據(jù)到 Hive Metastore (配置 hudi 表的 hive_sync.* 屬性)

這一方案在 Flink 中創(chuàng)建的 Hudi 表的元數(shù)據(jù)能自動(dòng)同步到 Hive Metastore,這樣,Spark / Hive 就可以讀寫(xiě)這張表了,但是,唯一不足的地方是:對(duì)于 Flink 這一端,具體說(shuō)就是 Flink SQL Client,當(dāng) Session 關(guān)閉再重新打開(kāi)后,F(xiàn)link 的 Catalog 里原來(lái)的 Hudi 表就消失了,雖然可以通過(guò)注冊(cè) Hive Catalog 讀到上次創(chuàng)建的 Hudi 表,但是,先后兩次操作,SQL 會(huì)不一樣,所以還是有一些瑕疵。說(shuō)到底,這種方式是在混用 Flink Catalog 和 Hive Metastore。

④ 在 Flink 的 Hive Catalog 中創(chuàng)建 Hudi 表,并同步表格元數(shù)據(jù)到 Hive Metastore (配置 hudi 表的 hive_sync.* 屬性)

這一方案和方案 2 很接近,通過(guò)主動(dòng)同步 Hudi 元數(shù)據(jù)到 Hive Metastore 解決了 Hive / Spark 無(wú)法讀寫(xiě) Hudi 表的問(wèn)題。不過(guò),這一方案將勢(shì)必在 Hive Metastore 中創(chuàng)建出至少兩張以上的表(對(duì)于 MOR 表是 3 張),一張是 Flink 原生的 Hudi 表,另一張是通過(guò) Hive Sync 同步出來(lái)的表,雖然兩張表的數(shù)據(jù)是一份,但是元數(shù)據(jù)上確實(shí)是兩張不同的表,且使用 Flink 時(shí),只能讀寫(xiě) Flink 注冊(cè)的表,使用 Hive / Spark 時(shí),只能使用 Hive Sync 出來(lái)的表,雖然可以 work,但顯然還是一種很別扭的方案

⑤ 使用 Hudi HMS Catalog ( HoodieHiveCatalog )

上述四種方案都有一定的局限性,為此,F(xiàn)link / Hudi 社區(qū)專門(mén)針對(duì) Hudi 的 metadata 開(kāi)發(fā)了一個(gè)單獨(dú)的 Flink Catalog 實(shí)現(xiàn):HoodieHiveCatalog,這一方案從最底層上解決了元數(shù)據(jù)適配和共享的問(wèn)題。接下來(lái)我們會(huì)詳細(xì)介紹這種實(shí)現(xiàn)。

3. 最佳解決方案


在“Flink 讀寫(xiě) Hudi 表并同步至 Hive Metastore” 這件事情上,作為需求,最好的解決方案應(yīng)該:在 Flink 中創(chuàng)建的 Hudi 表能自動(dòng)被 Hive / Spark 發(fā)現(xiàn)和讀寫(xiě),鑒于 Hive Metastore 在大數(shù)據(jù)生態(tài)中的地位,元數(shù)據(jù)應(yīng)該存儲(chǔ)于 Hive Metastore 中,但不需要顯式配置 Hive Sync,也不應(yīng)存儲(chǔ)兩份以上的元數(shù)據(jù),F(xiàn)link / Hive / Spark 有統(tǒng)一的元數(shù)據(jù)視圖,均可共同讀寫(xiě)同一張 Hudi 表,而這就是 HoodieHiveCatalog 所要完成的任務(wù)。

從設(shè)計(jì)模式的角度看,本質(zhì)上,HoodieHiveCatalog 是一個(gè) “適配器”,它將 Flink Catalog 的元數(shù)據(jù)格式和 Hudi 的元數(shù)據(jù)格式以及 Hive Metastore 的格式做了完備的適配,這才得以實(shí)現(xiàn)三者的無(wú)縫集成!使得 Hudi 表元數(shù)據(jù)在 Flink / Hive / Spark 上做到的真正意義上的統(tǒng)一。下圖非常細(xì)致地描繪了 HoodieHiveCatalog 的工作方式(Glue Data Catalog 部分不影響解讀,可忽略):

Flink Catalog 解讀與同步 Hudi 表元數(shù)據(jù)的最佳實(shí)踐,大數(shù)據(jù)專題,flink,catalog,hudi,metastore,hive,共用表,元數(shù)據(jù)

方案 5 自始至終只使用 Hive Metastore 一種存儲(chǔ)介質(zhì),并面向 Hudi Metadata 的存儲(chǔ)在 Flink Catalog 和 Hive Catalog 進(jìn)行了適配,只存儲(chǔ)一份元數(shù)據(jù),而其他方案都是同時(shí)使用兩套 Catalog,并通過(guò) Hive Sync 盡量彌合兩套 Catalog 之間的差異,總會(huì)遇到這樣那樣的不一致問(wèn)題。

4. 示例代碼


關(guān)于使用 Hudi HMS Catalog ( HoodieHiveCatalog ) 統(tǒng)一 Hudi 表在 Flink / Spark / Hive 上的元數(shù)據(jù)示例,我們已經(jīng)在《CDC 整合方案:MySQL > Flink CDC + Schema Registry + Avro > Kafka > Hudi》 一文中給出了細(xì)致的演示和程序代碼,請(qǐng)移步此文了解詳情。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-835396.html

到了這里,關(guān)于Flink Catalog 解讀與同步 Hudi 表元數(shù)據(jù)的最佳實(shí)踐的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Flink + Paimon數(shù)據(jù) CDC 入湖最佳實(shí)踐

    Flink + Paimon數(shù)據(jù) CDC 入湖最佳實(shí)踐

    Apache Paimon 最典型的場(chǎng)景是解決了 CDC (Change Data Capture)數(shù)據(jù)的入湖,看完這篇文章可以了解到: 1、為什么 CDC 入Hive遷移到 Paimon? 2、CDC 入 Paimon 怎么樣做到成本最低? 3、Paimon 對(duì)比 Hudi有什么樣的優(yōu)勢(shì)? ?Paimon 從 CDC 入湖場(chǎng)景出發(fā),希望提供給你?簡(jiǎn)單、低成本、低延時(shí)?的

    2024年01月16日
    瀏覽(61)
  • Flink:處理大規(guī)模復(fù)雜數(shù)據(jù)集的最佳實(shí)踐深入探究Flink的數(shù)據(jù)處理和性能優(yōu)化技術(shù)

    作者:禪與計(jì)算機(jī)程序設(shè)計(jì)藝術(shù) 隨著互聯(lián)網(wǎng)、移動(dòng)互聯(lián)網(wǎng)、物聯(lián)網(wǎng)等新型網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,企業(yè)對(duì)海量數(shù)據(jù)的處理日益依賴,而大數(shù)據(jù)分析、決策支持、風(fēng)險(xiǎn)控制等領(lǐng)域都需要海量的數(shù)據(jù)處理能力。如何高效、快速地處理海量數(shù)據(jù)、提升處理效率、降低成本,是當(dāng)下處理

    2024年02月13日
    瀏覽(27)
  • 如何在Flink SQL中輕松實(shí)現(xiàn)高效數(shù)據(jù)處理:最佳實(shí)踐揭秘Protobuf自定義格式

    目錄 Flink SQL Protobuf Format設(shè)計(jì)要點(diǎn) 1. 引言 2. 為什么需要自定義Protobuf格式? 3. 自定義Protobuf格式的

    2024年02月19日
    瀏覽(21)
  • Hudi系列15:Hudi元數(shù)據(jù)同步到Hive

    Hudi系列15:Hudi元數(shù)據(jù)同步到Hive

    使用DataSource writer或HoodieDeltaStreamer寫(xiě)入數(shù)據(jù)支持將表的最新模式同步到Hive metastore,這樣查詢就可以獲得新的列和分區(qū)。在這種情況下,最好從命令行或在一個(gè)獨(dú)立的jvm中運(yùn)行,Hudi提供了一個(gè)HiveSyncTool,一旦你構(gòu)建了Hudi -hive模塊,就可以如下所示調(diào)用它。以下是我們?nèi)绾瓮?/p>

    2024年02月02日
    瀏覽(22)
  • Airtest圖像識(shí)別測(cè)試工具原理解讀&最佳實(shí)踐

    Airtest圖像識(shí)別測(cè)試工具原理解讀&最佳實(shí)踐

    Airtest是一個(gè)跨平臺(tái)的、基于圖像識(shí)別的UI自動(dòng)化測(cè)試框架,適用于游戲和App,支持平臺(tái)有Windows、Android和iOS。Airtest框架基于一種圖形腳本語(yǔ)言Sikuli,引用該框架后,不再需要一行行的寫(xiě)代碼,通過(guò)截取按鈕或輸入框的圖片,用圖片組成測(cè)試場(chǎng)景,這種方式學(xué)習(xí)成本低,簡(jiǎn)單易

    2024年02月09日
    瀏覽(15)
  • Apache Hudi初探(三)(與flink的結(jié)合)--flink寫(xiě)hudi的操作(真正的寫(xiě)數(shù)據(jù))

    在之前的文章中Apache Hudi初探(二)(與flink的結(jié)合)–flink寫(xiě)hudi的操作(JobManager端的提交操作) 有說(shuō)到寫(xiě)hudi數(shù)據(jù)會(huì)涉及到 寫(xiě)hudi真實(shí)數(shù)據(jù) 以及 寫(xiě)hudi元數(shù)據(jù) ,這篇文章來(lái)說(shuō)一下具體的實(shí)現(xiàn) 這里的操作就是在 HoodieFlinkWriteClient.upsert 方法: initTable 初始化HoodieFlinkTable preWrite 在這里幾乎沒(méi)

    2024年02月10日
    瀏覽(19)
  • ApacheStreamPark2.1.0部署及執(zhí)行flink-cdc任務(wù)同步mysql表的數(shù)據(jù)到es的實(shí)踐

    ApacheStreamPark2.1.0部署及執(zhí)行flink-cdc任務(wù)同步mysql表的數(shù)據(jù)到es的實(shí)踐

    ApacheStreamPark是流處理極速開(kāi)發(fā)框架,流批一體 湖倉(cāng)一體的云原生平臺(tái),一站式流處理計(jì)算平臺(tái)。 ??特性中的簡(jiǎn)單易用和文檔詳盡這兩點(diǎn)我也是深有體會(huì)的,部署一點(diǎn)都不簡(jiǎn)單,照著官方文檔都不一定能搞出來(lái),下面部署環(huán)節(jié)慢慢來(lái)吐槽吧。 ??之前我們寫(xiě) Flink SQL 基本上

    2024年02月11日
    瀏覽(28)
  • Flink CDC 最佳實(shí)踐(以 MySQL 為例)

    1.1 確認(rèn) MySQL binlog 模式 確認(rèn) MySQL 數(shù)據(jù)庫(kù)的 binlog 模式是否為 ROW ??梢栽?MySQL 命令行中執(zhí)行以下語(yǔ)句確認(rèn): 如果返回結(jié)果中的 Value 字段為 ROW ,則說(shuō)明 binlog 模式為 ROW 。 1.2 下載并安裝 Flink 下載并安裝 Flink,可以參考官方文檔進(jìn)行安裝。 2.1 配置 MySQL 數(shù)據(jù)庫(kù)連接信息 在 F

    2024年02月07日
    瀏覽(30)
  • 【數(shù)據(jù)湖Hudi-10-Hudi集成Flink-讀取方式&限流&寫(xiě)入方式&寫(xiě)入模式&Bucket索引】

    【數(shù)據(jù)湖Hudi-10-Hudi集成Flink-讀取方式&限流&寫(xiě)入方式&寫(xiě)入模式&Bucket索引】

    當(dāng)前表默認(rèn)是快照讀取,即讀取最新的全量快照數(shù)據(jù)并一次性返回。通過(guò)參數(shù) read.streaming.enabled 參數(shù)開(kāi)啟流讀模式,通過(guò) read.start-commit 參數(shù)指定起始消費(fèi)位置,支持指定 earliest 從最早消費(fèi)。 1.with參數(shù) 名稱 Required 默認(rèn)值 說(shuō)明 read.streaming.enabled false false 設(shè)置 true 開(kāi)啟流讀模式

    2024年02月14日
    瀏覽(20)
  • Doris-05-集成Spark、Flink、Datax,以及數(shù)據(jù)湖分析(JDBC、ODBC、ES、Hive、多源數(shù)據(jù)目錄Catalog)

    Doris-05-集成Spark、Flink、Datax,以及數(shù)據(jù)湖分析(JDBC、ODBC、ES、Hive、多源數(shù)據(jù)目錄Catalog)

    準(zhǔn)備表和數(shù)據(jù): Spark 讀寫(xiě) Doris Spark Doris Connector 可以支持通過(guò) Spark 讀取 Doris 中存儲(chǔ)的數(shù)據(jù),也支持通過(guò)Spark寫(xiě)入數(shù)據(jù)到Doris。 代碼庫(kù)地址:https://github.com/apache/incubator-doris-spark-connector 支持從 Doris 中讀取數(shù)據(jù) 支持 Spark DataFrame 批量/流式 寫(xiě)入 Doris 可以將 Doris 表映射為 DataFra

    2024年02月06日
    瀏覽(49)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包