天天看點

Apache Hudi 0.9.0版本重磅釋出!更強大的流式資料湖平台

0.9.0 添加了對使用 Spark SQL 的 DDL/DML 的支援,朝着使所有角色(非工程師、分析師等)更容易通路和操作 Hudi 邁出了一大步。 使用者現在可以使用 <code>CREATE TABLE....USING HUDI</code> 和 <code>CREATE TABLE .. AS SELECT</code> 語句直接在 Hive 等目錄中建立和管理表。 然後使用者可以使用 <code>INSERT</code>、<code>UPDATE</code>、<code>MERGE INTO</code> 和 <code>DELETE</code> 語句來操作資料。 此外,<code>INSERT OVERWRITE</code> 語句可用于覆寫現有批處理 ETL 管道的表或分區中的現有資料。 有關更多資訊,請在此處單擊 SparkSQL 檢視文檔。 有關更多實作細節,請參閱 RFC-25。

Flink寫入支援 <code>CDC Format</code>的 MOR 表,打開選項 <code>changelog.enabled</code>時,Hudi 會持久化每條記錄的所有更改标志,使用 Flink 的流讀取器,使用者可以根據這些更改日志進行有狀态的計算。請注意當使用異步壓縮時,所有中間更改都合并為一個(最後一條記錄),僅具有 UPSERT 語義。

支援Bulk insert來加載現有表,可以将 <code>write.operation</code> 設定為 <code>bulk_insert</code> 來使用。

Flink支援流式讀取 COW 表。

删除消息預設在流式讀取模式下發出,當 <code>changelog.enabled</code> 為 <code>false</code> 時,下遊接收 <code>DELETE</code> 消息作為帶有空負載的 Hudi 記錄。

Flink寫入現在可以更新曆史分區,即删除曆史分區中的舊記錄然後在目前分區插入新記錄,打開 <code>index.global.enabled</code> 使用。

通過支援不同的 Hive 版本(1.x、2.x、3.x),大大改善了 Hive 同步。

Flink 支援純日志追加模式,在這種模式下沒有記錄去重,對于 <code>COW</code> 和 <code>MOR</code> 表,每次重新整理都直接寫入 parquet,關閉 <code>write.insert.deduplicate</code> 以開啟這種模式。

Hudi 現在可以在 Spark 中注冊為資料源表。

基于Metadata Table的 Spark 讀取改進。

添加了對時間旅行查詢的支援。 請參考時間旅行。

添加了虛拟鍵支援,使用者可以避免将元字段添加到 Hudi 表并利用現有的字段來填充記錄鍵和分區路徑。 請參考 具體配置來開啟虛拟鍵。

Clustering改進

DeltaStreamer 和 Spark Streaming 都添加了異步Clustering支援。可以在這篇部落格文章中找到更多細節。

增量讀取也适用于Clustering資料。

添加了 HoodieClusteringJob 以作為獨立作業來建構和執行Clustering計劃。

添加了一個配置(<code>hoodie.clustering.plan.strategy.daybased.skipfromlatest.partitions</code>)以在建立Clustering計劃時跳過最近的 N 個分區。

增強 Bulk_Insert模式(新增行寫入器模式),并預設打開,使用者可以使用行寫入器模式以獲得更好的性能。

在 HiveSyncTool 中添加了對 HMS 的支援。 HMSDDLExecutor 是一個 DDLExecutor 實作,基于使用 HMS 的 HMS apis 直接用于執行所有 DDL 。

Spark 引擎中添加了預送出驗證器架構。 使用者可以利用該架構來添加驗證給定送出的檔案是否都存在,或是否已經删除所有無效檔案等。

org.apache.hudi.client.validator.SqlQueryEqualityPreCommitValidator 可用于驗證送出前後行的資料行相同

org.apache.hudi.client.validator.SqlQueryInequalityPreCommitValidator 可用于驗證送出前後的資料行不相同

org.apache.hudi.client.validator.SqlQuerySingleResultPreCommitValidator 可用于驗證表是否産生特定值

這些可以通過設定 <code>hoodie.precommit.validators=&lt;逗号分隔的驗證器類名稱清單&gt; 來配置</code>。 使用者還可以通過擴充抽象類 <code>SparkPreCommitValidator</code> 并覆寫此方法來提供自己的實作。

使用者可以選擇删除用于生成分區路徑的字段(<code>hoodie.datasource.write.drop.partition.columns</code>),以支援使用BigQuery系統查詢Hudi快照。

支援華為雲、百度雲、金山雲對象存儲。

添加了對<code>delete_partition</code>操作的支援,使用者可以在需要時利用它删除舊分區。

ORC格式支援,現在使用者可以指定存儲格式為ORC,注意現在暫時隻支援Spark查詢。

Hudi 使用不同類型的可溢出映射,用于内部處理合并(壓縮、更新甚至 MOR 快照查詢)。 在 0.9.0 中,我們添加了對 bitcask預設選項的壓縮支援,并引入了由 RocksDB 支援,它可以在大批量更新或處理大型基本檔案時性能更高。

增強對未送出的資料的自動清理,該增強在雲存儲上性能更優,具體來說是新增了一種新的标記機制,利用時間線伺服器對底層存儲執行集中協調的檔案标記批量讀/寫。 你可以使用這個配置來啟用,并在這個部落格上了解更多。

JDBC Source 可以采用提取 SQL 語句并從支援 JDBC 的源中增量擷取資料。 這對于例如從 RDBMS 源讀取資料時很有用。 請注意,這種方法可能需要定期重新開機以確定資料一緻性,盡管在基于 CDC 的方法上操作要簡單得多。

SQLSource 使用 Spark SQL 語句從現有表中提取資料,對于基于 SQL 的簡單回填用例非常有用,例如:過去 N 個月隻回填一列。

S3EventsHoodieIncrSource 和 S3EventsSource 有助于從 S3 讀取資料,可靠且高效地将資料攝取到 Hudi。 現有使用 DFSSource 的方法是使用檔案的最後修改時間作為檢查點來拉入新檔案,但是如果大量檔案具有相同的修改時間,則可能會遇到丢失一些要從源讀取的檔案的問題。 這兩個源(S3EventsHoodieIncrSource 和 S3EventsSource)通過利用從源存儲桶訂閱檔案事件的 AWS SNS 和 SQS 服務,共同確定将資料從 S3 可靠地攝取到 Hudi。

除了使用 DeltaStreamer 使用正常偏移格式(topic_name,partition_num:offset,partition_num:offset,....),我們還為 kafka 源提取資料添加了兩種新格式,即基于時間戳群組消費者偏移量。

添加了在 deltastreamer 中使用模式提供程式在模式系統資料庫提供程式 url 中傳遞基本身份驗證憑據的支援。

<code>hudi-cli</code> 的一些改進,例如<code>SCHEDULE COMPACTION</code>和<code>RUN COMPACTION</code>語句,以便輕松在 Hudi 表上排程和運作Compaction、Clustering。

如果從 0.5.3 之前的版本遷移,還請檢查下面每個後續版本的更新說明。

Hudi 在 0.9.0 中添加了更多表屬性,以幫助将現有的 Hudi 表與 spark-sql 結合使用。 為了順利地遷移,這些屬性添加到 <code>hoodie.properties</code> 檔案中。 每當 Hudi 使用較新的表版本啟動時,即 2(或從 0.9.0 之前移動到 0.9.0),更新步驟将自動執行。 這個自動更新步驟對于每個 Hudi 表隻會發生一次,因為<code>hoodie.table.version</code> 将在更新完成後在屬性檔案中更新。

同樣如果某些使用者想要将 Hudi 從表版本 2 降級到 1 或從 Hudi 0.9.0 移動到 0.9.0 之前,則添加了用于降級的指令行工具(command - <code>downgrade</code>),需要使用0.9.0版本中的<code>hudi-cli</code>工具。

在此版本中我們添加了一個新架構來跟蹤代碼中的配置屬性,不再使用包含屬性名稱和值的字元串變量。 這一舉措有助于我們自動生成配置文檔。雖然我們仍然支援舊的字元串變量,但鼓勵使用者使用新的 <code>ConfigProperty</code> 配置項。在大多數情況下,它就像在相應的替代方法上調用 <code>.key()</code> 和 <code>.defaultValue()</code> 一樣簡單。 例如 <code>RECORDKEY_FIELD_OPT_KEY</code> 可以替換為 <code>RECORDKEY_FIELD_NAME.key()</code>。

感謝參與0.9.0版本的所有貢獻者,歡迎廣大資料湖愛好者加入Apache Hudi社群,歡迎star &amp; fork https://github.com/apache/hudi

源碼下載下傳 : Apache Hudi 0.9.0 Source Release

Maven倉庫包位址: 位址

PS:如果您覺得閱讀本文對您有幫助,請點一下<b>“推薦”</b>按鈕,您的<b>“推薦”</b>,将會是我不竭的動力!

作者:<b>leesf</b>    <b>掌控之中,才會成功;掌控之外,注定失敗。</b>

出處:http://www.cnblogs.com/leesf456/

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。

如果覺得本文對您有幫助,您可以請我喝杯咖啡!

Apache Hudi 0.9.0版本重磅釋出!更強大的流式資料湖平台
Apache Hudi 0.9.0版本重磅釋出!更強大的流式資料湖平台