1. 下載信息
- 源碼:Apache Hudi 0.6.0 Source Release (asc, sha512)
- 二進制Jar包:nexus
2. 遷移指南
- 如果您從0.5.3以前的版本遷移至0.6.0,請仔細核對每個版本的遷移指南;
- 0.6.0版本從基於list的rollback策略變更為了基於marker文件的rollback策略,為進行平穩遷移,會在
hoodie.properties
文件中配置一個新屬性hoodie.table.version
;無論何時使用Hudi表新版本,如1(從0.6.0以前遷移到0.6.0),將會自動進行升級,並且只會對Hudi表升級一次,升級后hoodie.table.version
屬性將會自動更新。 - 類似也提供了一個降級命令行工具(-downgrade),如用戶想從0.6.0版本回退到之前的版本,此時
hoodie.table.version
將會從1變為0。 - 如果你在
bulkInsert()
RDD API中使用了自定義partitioner,注意0.6.0版本中該接口變為了BulkInsertPartitioner
,需要對你的實現做適配。
3. 重點特性
3.1 寫入端改進
- 對已有Parquet表進行遷移:支持通過Spark Datasource/DeltaStreamer引導已存在的Parquet表遷移至Hudi,同時可通過Hive,SparkSQL,AWS Athena進行查詢(PrestoDB即將支持),技術細節請參考RFC-15。該特性暫時標記為experimental,在后續的0.6.x版本將持續進行完善。與傳統重寫方案相比資源消耗和耗時都有數據量的提升。
- bulk_insert支持原生寫入:避免在bulk_insert寫入路徑中進行DataFrame - RDD轉化,可顯著提升bulk load的性能。后續的0.6.x版本將應用到其他的寫操作以使得schema管理更為輕松,徹底避免spark-avro的轉化。
- bulk_insert模式:Hudi bulk_insert對輸入進行排序以便優化文件大小並避免在並發寫入DFS多分區時的內存溢出問題,對於想在寫入Hudi之前就已經准備好DataFrame的用戶,Hudi也提供了
hoodie.bulkinsert.sort.mode
配置項。 - 支持Cleaning與寫入並發執行,開啟
hoodie.clean.async=true
以減少commit過程的耗時; - Spark Streaming寫入支持異步Compaction,可通過
hoodie.datasource.compaction.async.enable
進行配置。 - 支持通過marker文件進行Rollback,而不再對全表進行listing,設置
hoodie.rollback.using.markers=true
啟用。 - 支持一種新的索引類型
hoodie.index.type=SIMPLE
,對於updates/deletes覆蓋表大多數數據的場景,會比BLOOM_INDEX
更快。 - 支持
Azure Data Lake Storage V2
,Alluxio
和Tencent Cloud Object Storage
- HoodieMultiDeltaStreamer 支持在單個DeltaStreamer中消費多個Kafka流,降低使用DeltaStreamer作為數據湖攝取工具時的運維負擔。
- 新增新的工具類InitialCheckPointProvider,以便在遷移至DeltaStreamer后設置Checkpoint。
- DeltaStreamer工具支持攝取CSV數據源,同時可chain多個transformers來構建更靈活的ETL作業。
- 引入新的Key生成器
CustomKeyGenerator
,對不同類型的Key、Partition路徑提供更靈活的配置,另外在TimestampBasedKeyGenerator
中還支持更多時間單位。更多詳情請參考docs
3.2 查詢端改進
- 從0.6.0版本開始,Spark DataSource支持MoR表的SNAPSHOT查詢;
- 在之前版本中,對CoW表,Hudi僅僅支持
HoodieCombineHiveInputFormat
來確保對於任何查詢都只會生成有限數量的mappers。Hudi現在對MoR表支持使用HoodieCombineInputFormat
。 - 在HoodieROPathFilter中緩存MetaClient來加速Spark查詢,這可以減少在S3上對Read-Optimized查詢進行文件過濾的額外開銷。
3.3 易用性提升
- 對Spark DAG賦名字以便更好的進行調試。
- 支持用戶自定義可插拔指標報告者,另外內置Console,JMX,Prometheus,DataDog指標報告者。
- 新增Data Snapshot Exporter工具類,通過該工具類可將某一時刻的Hudi表導出為Parquet文件。
- 引入寫入提交回調鈎子,以便在Commit時可以通知增量pipelines,例如在新的commit到來后觸發Apache Airflow作業。
- 支持通過CLI刪除Savepoints。
- 新增命令
export instants
來導出instant元數據。
4. 貢獻者
感謝以下貢獻者,排名不分先后
hddong, xushiyan, wangxianghu, shenh062326, prashantwason, bvaradar, vinothchandar, baobaoyeye, andreitaleanu, clocklear , linshan-ma, satishkotha, Trevor-zhang, pratyakshsharma, GuoPhilipse, nsivabalan, zhedoubushishi, umehrot2, lw309637554, DeyinZhong, zherenyu831, lamber-ken, garyli1019, bhasudha, n3nash, yihua, liujinhui1994, sreeram26, Yungthuis, cheshta2904, leesf