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

Apache Hudi 在袋鼠云數(shù)據(jù)湖平臺的設計與實踐

這篇具有很好參考價值的文章主要介紹了Apache Hudi 在袋鼠云數(shù)據(jù)湖平臺的設計與實踐。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

在大數(shù)據(jù)處理中,實時數(shù)據(jù)分析是一個重要的需求。隨著數(shù)據(jù)量的不斷增長,對于實時分析的挑戰(zhàn)也在不斷加大,傳統(tǒng)的批處理方式已經不能滿足實時數(shù)據(jù)處理的需求,需要一種更加高效的技術來解決這個問題。Apache Hudi(Hadoop Upserts Deletes and Incremental Processing)就是這樣一種技術,提供了高效的實時數(shù)據(jù)倉庫管理功能。

本文將介紹袋鼠云基于 Hudi 構建數(shù)據(jù)湖的整體方案架構及其在實時數(shù)據(jù)倉庫處理方面的特點,并且為大家展示一個使用 Apache Hudi 的簡單示例,便于新手上路。

Apache Hudi 介紹

Apache Hudi 是一個開源的數(shù)據(jù)湖存儲系統(tǒng),可以在 Hadoop 生態(tài)系統(tǒng)中提供實時數(shù)據(jù)倉庫處理功能。Hudi 最早由 Uber 開發(fā),后來成為 Apache 頂級項目。

Hudi 主要特性

· 支持快速插入和更新操作,以便在數(shù)據(jù)倉庫中實時處理數(shù)據(jù);

· 提供增量查詢功能,可有效提高數(shù)據(jù)分析效率;

· 支持時間點查詢,以便查看數(shù)據(jù)在某一時刻的狀態(tài);

· 與 Apache Spark、Hive 等大數(shù)據(jù)分析工具兼容。

Hudi 架構

Apache Hudi 的架構包括以下幾個主要組件:

· Hudi 數(shù)據(jù)存儲:Hudi 數(shù)據(jù)存儲是 Hudi 的核心組件,負責存儲數(shù)據(jù),數(shù)據(jù)存儲有兩種類型:Copy-On-Write(COW)和 Merge-On-Read(MOR);

· Copy-On-Write:COW 存儲類型會在對數(shù)據(jù)進行更新時,創(chuàng)建一個新的數(shù)據(jù)文件副本,將更新的數(shù)據(jù)寫入副本中,之后,新的數(shù)據(jù)文件副本會替換原始數(shù)據(jù)文件;

· Merge-On-Read:MOR 存儲類型會在查詢時,將更新的數(shù)據(jù)與原始數(shù)據(jù)進行合并,這種方式可以減少數(shù)據(jù)存儲的寫入延遲,但會增加查詢的計算量;

· Hudi 索引:Hudi 索引用于維護數(shù)據(jù)記錄的位置信息,索引有兩種類型:內置索引(如 Bloom 過濾器)和外部索引(如 HBase 索引);

· Hudi 查詢引擎:Hudi 查詢引擎負責處理查詢請求,Hudi 支持多種查詢引擎,如 Spark SQL、Hive、Presto 等。

Apache Hudi 在袋鼠云數(shù)據(jù)湖平臺的設計與實踐

Hudi 的使用場景

Apache Hudi 可以幫助企業(yè)和組織實現(xiàn)實時數(shù)據(jù)處理和分析。實時數(shù)據(jù)處理需要快速地處理和查詢數(shù)據(jù),同時還需要保證數(shù)據(jù)的一致性和可靠性。

Apache Hudi 的增量數(shù)據(jù)處理、ACID 事務性保證、寫時合并等技術特性可以幫助企業(yè)更好地實現(xiàn)實時數(shù)據(jù)處理和分析,基于 Hudi 的特性可以在一定程度上在實時數(shù)倉的構建過程中承擔上下游數(shù)據(jù)鏈路的對接(類似 Kafka 的角色)。既能實現(xiàn)增量的數(shù)據(jù)處理,也能為批流一體的處理提供存儲基礎。

Hudi 的優(yōu)勢和劣勢

● 優(yōu)勢

· 高效處理大規(guī)模數(shù)據(jù)集;

· 支持實時數(shù)據(jù)更新和查詢;

· 實現(xiàn)了增量寫入機制,提高了數(shù)據(jù)訪問效率;

· Hudi 可以與流處理管道集成;

· Hudi 提供了時間旅行功能,允許回溯數(shù)據(jù)的歷史版本。

● 劣勢

· 在讀寫數(shù)據(jù)時需要付出額外的代價;

· 操作比較復雜,需要使用專業(yè)的編程語言和工具。

Hudi 在袋鼠云數(shù)據(jù)湖平臺上的實踐

Hudi 在袋鼠云數(shù)據(jù)湖的技術架構

Hudi 在袋鼠云的數(shù)據(jù)湖平臺上主要對數(shù)據(jù)湖管理提供助力:

· 元數(shù)據(jù)的接入,讓用戶可以快速的對表進行管理;

· 數(shù)據(jù)快速接入,包括對符合條件的原有表數(shù)據(jù)進行轉換,快速搭建數(shù)據(jù)湖能力;

· 湖表的管理,監(jiān)控小文件定期進行合并,提升表的查詢性能,內在豐富的表操作功能,包括 time travel ,孤兒文件清理,過期快照清理等;

· 索引構建,提供多種索引包括 bloom filter,zorder 等,提升計算引擎的查詢性能。

Apache Hudi 在袋鼠云數(shù)據(jù)湖平臺的設計與實踐

Hudi 使用示例

在介紹了 Hudi 的基本信息和袋鼠云數(shù)據(jù)湖平臺的結構之后,我們來看一個使用示例,替換 Flink 在內存中的 join 過程。

在 Flink 中對多流 join 往往是比較頭疼的場景,需要考慮 state ttl 時間設置,設置太小數(shù)據(jù)經常關聯(lián)不上,設置太大內存又需要很高才能保留,我們通過 Hudi 的方式來換個思路實現(xiàn)。

● 構建 catalog

public String createCatalog(){
    String createCatalog = "CREATE CATALOG hudi_catalog WITH (\n" +
            "    'type' = 'hudi',\n" +
            "    'mode' = 'hms',\n" +
            "    'default-database' = 'default',\n" +
            "    'hive.conf.dir' = '/hive_conf_dir',\n" +
            "    'table.external' = 'true'\n" +
            ")";

    return createCatalog;
}

● 創(chuàng)建 hudi 表

public String createHudiTable(){

    String createTable = "CREATE TABLE if not exists hudi_catalog.flink_db.test_hudi_flink_join_2 (\n" +
            "  id int ,\n" +
            "  name VARCHAR(10),\n" +
            "  age int ,\n" +
            "  address VARCHAR(10),\n" +
            "  dt VARCHAR(10),\n" +
            "  primary key(id) not enforced\n" +
            ")\n" +
            "PARTITIONED BY (dt)\n" +
            "WITH (\n" +
            "  'connector' = 'hudi',\n" +
            "  'table.type' = 'MERGE_ON_READ',\n" +
            "  'changelog.enabled' = 'true',\n" +
            "  'index.type' = 'BUCKET',\n" +
            "  'hoodie.bucket.index.num.buckets' = '2',\n" +
            String.format("  '%s' = '%s',\n", FlinkOptions.PRECOMBINE_FIELD.key(), FlinkOptions.NO_PRE_COMBINE) +
            "  'write.payload.class' = '" + PartialUpdateAvroPayload.class.getName() + "'\n" +

    ");";

    return createTable;
}

● 更新 hudi 表的 flink_db.test_hudi_flink_join_2 的 id, name, age, dt 列

01 從 kafka 中讀取 topic1

public String createKafkaTable1(){
    String kafkaSource1 = "CREATE TABLE source1\n" +
            "(\n" +
            "    id        INT,\n" +
            "    name      STRING,\n" +
            "    age        INT,\n" +
            "    dt        String,\n" +
            "    PROCTIME AS PROCTIME()\n" +
            ") WITH (\n" +
            "      'connector' = 'kafka'\n" +
            "      ,'topic' = 'join_topic1'\n" +
            "      ,'properties.bootstrap.servers' = 'localhost:9092'\n" +
            "      ,'scan.startup.mode' = 'earliest-offset'\n" +
            "      ,'format' = 'json'\n" +
            "      ,'json.timestamp-format.standard' = 'SQL'\n" +
            "      )";

    return kafkaSource1;
}

02 從 kafka 中讀取 topic2

public String createKafkaTable2(){
    String kafkaSource2 = "CREATE TABLE source2\n" +
            "(\n" +
            "    id        INT,\n" +
            "    name      STRING,\n" +
            "    address        string,\n" +
            "    dt        String,\n" +
            "    PROCTIME AS PROCTIME()\n" +
            ") WITH (\n" +
            "      'connector' = 'kafka'\n" +
            "      ,'topic' = 'join_topic2'\n" +
            "      ,'properties.bootstrap.servers' = 'localhost:9092'\n" +
            "      ,'scan.startup.mode' = 'earliest-offset'\n" +
            "      ,'format' = 'json'\n" +
            "      ,'json.timestamp-format.standard' = 'SQL'\n" +
            "      )";

    return kafkaSource2;
}

● 執(zhí)行插入邏輯1

String insertSQL = "insert into hudi_catalog.flink_db.test_hudi_flink_join_2(id,name,age,dt) " +
        "select id, name,age,dt from source1";

● 通過 spark 查詢數(shù)據(jù)

20230323090605515 20230323090605515_1_186 45 1 c990a618-896c-4627-8243-baace65c7ad6-0_0-21-26_20230331101342388.parquet 45 xc 45 NULL 1

20230323090605515 20230323090605515_1_179 30 1 c990a618-896c-4627-8243-baace65c7ad6-0_0-21-26_20230331101342388.parquet 30 xc 30 NULL 1

● 執(zhí)行插入邏輯2

String insertSQL = "insert into hudi_catalog.flink_db.test_hudi_flink_join_2(id,name,address,dt) " +
        "select id, name, address,dt from source2";

● 運行成功

運行成功后在 spark 中查詢對應的表數(shù)據(jù):

20230323090605515 20230323090605515_1_186 45 1 c990a618-896c-4627-8243-baace65c7ad6-0_0-21-26_20230331101342388.parquet 45 xc 45 xc:address45 1

20230323090605515 20230323090605515_1_179 30 1 c990a618-896c-4627-8243-baace65c7ad6-0_0-21-26_20230331101342388.parquet 30 xc 30 xc:address30 1

可以發(fā)現(xiàn)在第二次數(shù)據(jù)運行之后,表數(shù)據(jù)的對應字段 address 已經更新,達到了類似在 Flink 中直接執(zhí)行 join 的效果。

`insert into hudi_catalog.flink_db.test_hudi_flink_join_2

select a.id, a.name, a.age,b.address a.dt from source1 a left join source2 b on a.id = b.id `

《數(shù)棧產品白皮書》:https://www.dtstack.com/resources/1004?src=szsm

《數(shù)據(jù)治理行業(yè)實踐白皮書》下載地址:https://www.dtstack.com/resources/1001?src=szsm

想了解或咨詢更多有關袋鼠云大數(shù)據(jù)產品、行業(yè)解決方案、客戶案例的朋友,瀏覽袋鼠云官網(wǎng):https://www.dtstack.com/?src=szbky

同時,歡迎對大數(shù)據(jù)開源項目有興趣的同學加入「袋鼠云開源框架釘釘技術qun」,交流最新開源技術信息,qun號碼:30537511,項目地址:https://github.com/DTStack文章來源地址http://www.zghlxwxcb.cn/news/detail-457166.html

到了這里,關于Apache Hudi 在袋鼠云數(shù)據(jù)湖平臺的設計與實踐的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • 查詢速度提升15倍!銀聯(lián)商務基于 Apache Doris 的數(shù)據(jù)平臺升級實踐

    查詢速度提升15倍!銀聯(lián)商務基于 Apache Doris 的數(shù)據(jù)平臺升級實踐

    本文導讀: 在長期服務廣大規(guī)模商戶的過程中,銀聯(lián)商務已沉淀了龐大、真實、優(yōu)質的數(shù)據(jù)資產數(shù)據(jù),這些數(shù)據(jù)不僅是銀聯(lián)商務開啟新增長曲線的基礎,更是進一步服務好商戶的關鍵支撐。為更好提供數(shù)據(jù)服務,銀聯(lián)商務實現(xiàn)了從 Hadoop 到 Apache Doris 的架構升級,使數(shù)據(jù) 導入

    2024年02月02日
    瀏覽(23)
  • 大數(shù)據(jù)Hadoop之——Apache Hudi 數(shù)據(jù)湖實戰(zhàn)操作(FlinkCDC)

    大數(shù)據(jù)Hadoop之——Apache Hudi 數(shù)據(jù)湖實戰(zhàn)操作(FlinkCDC)

    Hudi(Hadoop Upserts Deletes and Incrementals) ,簡稱 Hudi ,是一個 流式數(shù)據(jù)湖平臺 ,關于Hudi的更多介紹可以參考我以下幾篇文章: 大數(shù)據(jù)Hadoop之——新一代流式數(shù)據(jù)湖平臺 Apache Hudi 大數(shù)據(jù)Hadoop之——Apache Hudi 數(shù)據(jù)湖實戰(zhàn)操作(Spark,F(xiàn)link與Hudi整合) 這里主要講解Hive、Trino、Starr

    2023年04月20日
    瀏覽(21)
  • 一文了解袋鼠云在實時數(shù)據(jù)湖上的探索與實踐

    一文了解袋鼠云在實時數(shù)據(jù)湖上的探索與實踐

    近日,袋鼠云大數(shù)據(jù)引擎專家郝衛(wèi)亮,為大家?guī)砹恕洞笤圃趯崟r數(shù)據(jù)湖上的探索與實踐》主題分享,幫助大家能了解到什么是實時數(shù)據(jù)湖、如何進行數(shù)據(jù)湖選型及數(shù)據(jù)平臺建設數(shù)據(jù)湖的經驗。 如今,大規(guī)模、高時效、智能化數(shù)據(jù)處理已是“剛需”,企業(yè)需要更強大的數(shù)據(jù)

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

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

    2024年02月10日
    瀏覽(19)
  • 實時數(shù)據(jù)湖 Flink Hudi 實踐探索

    實時數(shù)據(jù)湖 Flink Hudi 實踐探索

    導讀: 首先做個自我介紹,我目前在阿里云云計算平臺,從事研究 Flink 和 Hudi 結合方向的相關工作。 目前,F(xiàn)link + Hudi 的方案推廣大概已經有了一年半的時間,在國內流行度也已比較高,主流的公司也會嘗試去迭代他們的數(shù)倉方案。所以,今天我介紹的主題是 Flink 和 Hudi 在

    2024年01月16日
    瀏覽(22)
  • Apache Hudi DeltaStreamer 接入CDC數(shù)據(jù)時如何完成 Kafka 的身份認證?

    題目有些拗口,簡短截說,我們對于Apache Hudi DeltaStreamer在接入CDC數(shù)據(jù)時,對于其如何通過 Kafka 的身份認證,做了一系列測試和研究,有如下明確結論: .?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?

    2024年02月16日
    瀏覽(24)
  • 探索在Apache SeaTunnel上使用Hudi連接器,高效管理大數(shù)據(jù)的技術

    探索在Apache SeaTunnel上使用Hudi連接器,高效管理大數(shù)據(jù)的技術

    Apache Hudi是一個數(shù)據(jù)湖處理框架,通過提供簡單的方式來進行數(shù)據(jù)的插入、更新和刪除操作,Hudi能夠幫助數(shù)據(jù)工程師和科學家更高效地處理大數(shù)據(jù),并支持實時查詢。 Spark Flink SeaTunnel Zeta 批處理 流處理 精確一次性 列投影 并行處理 支持用戶自定義切分 Hudi Source 連接器專為從

    2024年04月28日
    瀏覽(23)
  • 袋鼠云數(shù)棧 DataOps 數(shù)據(jù)生產力實踐,實現(xiàn)數(shù)據(jù)流程的自動化和規(guī)范化

    袋鼠云數(shù)棧 DataOps 數(shù)據(jù)生產力實踐,實現(xiàn)數(shù)據(jù)流程的自動化和規(guī)范化

    袋鼠云產品團隊在幫助企業(yè)進行數(shù)字化轉型實踐的過程中,發(fā)現(xiàn)很多企業(yè)在數(shù)據(jù)生產鏈路上都有著相同的問題。包括數(shù)據(jù)團隊聚焦于業(yè)務需求短期內的快速交付,內部缺少自頂向下的數(shù)據(jù)生產管理制度,在數(shù)據(jù)標準、數(shù)據(jù)生產流程到研發(fā)規(guī)范的各個層面均存在不完善與不規(guī)范

    2024年02月13日
    瀏覽(32)
  • 性能、安全和穩(wěn)定,袋鼠云數(shù)據(jù)服務平臺 DataAPI 為企業(yè) API 保駕護航

    性能、安全和穩(wěn)定,袋鼠云數(shù)據(jù)服務平臺 DataAPI 為企業(yè) API 保駕護航

    通過 API 對外提供數(shù)據(jù)服務是大部分企業(yè)中比較常見的數(shù)據(jù)應用方式,對于 API *臺管理者、開發(fā)者和調用者來說,API 的調用性能、安全性和穩(wěn)定性是在*臺選型時最需要考慮的三個因素。 袋鼠云API開發(fā)及管理*臺【數(shù)棧-數(shù)據(jù)服務 DataAPI】通過多種手段標準化管控服務,可完成從

    2024年02月09日
    瀏覽(24)
  • 【大數(shù)據(jù)】Apache NiFi 助力數(shù)據(jù)處理及分發(fā)

    【大數(shù)據(jù)】Apache NiFi 助力數(shù)據(jù)處理及分發(fā)

    簡單的說,NiFi 就是為了解決不同系統(tǒng)間數(shù)據(jù)自動流通問題而建立的。雖然 dataflow 這個術語在各種場景都有被使用,但我們在這里使用它來表示不同系統(tǒng)間的自動化的可管理的信息流。自企業(yè)擁有多個系統(tǒng)開始,一些系統(tǒng)會有數(shù)據(jù)生成,一些系統(tǒng)要消費數(shù)據(jù),而不同系統(tǒng)之間

    2024年02月07日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領取紅包

二維碼2

領紅包