大數(shù)據(jù)Hadoop之——Apache Hudi 數(shù)據(jù)湖實戰(zhàn)操作(Spark,F(xiàn)link與Hudi整合)
一、概述
Hudi(Hadoop Upserts Deletes and Incrementals)?,簡稱?Hudi?,是一個流式數(shù)據(jù)湖平臺,支持對海量數(shù)據(jù)快速更新,內置表格式,支持事務的存儲層、 一系列表服務、數(shù)據(jù)服務(開箱即用的攝取工具)以及完善的運維監(jiān)控工具,它可以以極低的延遲將數(shù)據(jù)快速存儲到HDFS或云存儲(S3)的工具,最主要的特點支持記錄級別的插入更新(Upsert)和刪除,同時還支持增量查詢。
GitHub地址:https://github.com/apache/hudi
官方文檔:https://hudi.apache.org/cn/docs/overview
關于Apache Hudi 數(shù)據(jù)湖 也可以參考我這篇文章:大數(shù)據(jù)Hadoop之——新一代流式數(shù)據(jù)湖平臺 Apache Hudi

二、Hudi CLI
構建hudi后,可以通過cd hudi cli&&./hudi-cli.sh啟動shell。一個hudi表駐留在DFS上的一個稱為basePath的位置,我們需要這個位置才能連接到hudi表。Hudi庫有效地在內部管理此表,使用.hoodie子文件夾跟蹤所有元數(shù)據(jù)。
編譯生成的包如下:


三、Spark 與 Hudi 整合使用
Hudi 流式數(shù)據(jù)湖平臺,協(xié)助管理數(shù)據(jù),借助HDFS文件系統(tǒng)存儲數(shù)據(jù),使用Spark操作數(shù)據(jù)。

Hadoop 安裝可參考我這篇文章:大數(shù)據(jù)Hadoop原理介紹+安裝+實戰(zhàn)操作(HDFS+YARN+MapReduce)?Hadoop HA安裝可參考我這篇文章:大數(shù)據(jù)Hadoop之——Hadoop 3.3.4 HA(高可用)原理與實現(xiàn)(QJM)Spark 環(huán)境配置可以參考我這篇文章:大數(shù)據(jù)Hadoop之——計算引擎Spark
1)Spark 測試

2)Spark 與 Hudi 整合使用
官方示例:https://hudi.apache.org/docs/quick-start-guide/在spark-shell命令行,對Hudi表數(shù)據(jù)進行操作,需要運行spark-shell命令是,添加相關的依賴包,命令如下:
1、啟動spark-shell
【第一種方式】在線聯(lián)網下載相關jar包
【第二種方式】離線使用已經下載好的jar包
2、導入park及Hudi相關包
3、定義變量
4、模擬生成Trip乘車數(shù)據(jù)
其中,DataGenerator可以用于生成測試數(shù)據(jù),用來完成后續(xù)操作。
5、將模擬數(shù)據(jù)List轉換為DataFrame數(shù)據(jù)集
6、將數(shù)據(jù)寫入到hudi
本地存儲

HDFS 存儲

四、Flink 與 Hudi 整合使用
官方示例:https://hudi.apache.org/docs/flink-quick-start-guide
1)啟動flink集群
下載地址:http://flink.apache.org/downloads.html

2) 啟動flink SQL 客戶端
3)添加數(shù)據(jù)

HDFS上查看

4)查詢數(shù)據(jù)(批式查詢)

5)更新數(shù)據(jù)
6)Streaming Query(流式查詢)
首先創(chuàng)建表t2,設置相關屬性,以流的方式查詢讀取,映射到上面表:t1
- read.streaming.enabled 設置為true,表明通過streaming的方式讀取表數(shù)據(jù);
 - read.streaming.check-interval 指定了source監(jiān)控新的commits的間隔時間4s
 - table.type 設置表類型為 MERGE_ON_READ
 
注意:查看可能會遇到如下錯誤:
[ERROR] Could not execute SQL statement. Reason: java.lang.ClassNotFoundException: org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat
【解決】添加hadoop-mapreduce-client-core-xxx.jar和hive-exec-xxx.jar到Flink lib中。

Hive 與 Hudi的整合,小伙伴可以先看官網文檔:https://hudi.apache.org/docs/syncing_metastore/#flink-setup















 
 
 


















 
 
 
 