0.7.0版本中支持了對Hudi表數據進行Clustering(對數據按照數據特徵進行聚簇,以便優化文件大小和數據佈局),Clustering提供了更靈活地方式增長文件大小,有了Clustering特性,即可更快速地攝取數據,而後聚簇爲更大的文件,實驗數據代表查詢性能能夠提高34倍,文件數能夠減小1020倍;另外Clustering對於查詢側優化也很明顯,在查詢時一般會基於字段進行Clustering,經過徹底跳過一些文件來極大提高查詢性能,這與雲數倉Snowflake提供的Clustering功能很是相似,咱們很是高興地宣稱這個特性在0.7.0版本中徹底開源免費。html
想要了解更多Clustering細節,能夠參考RFC-19,能夠查閱這些配置來在你的數據管道中啓用Clustering,如今Hudi支持同步和異步的Clustering模式。java
Hudi項目始於Uber,開始是基於HDFS實現的數據湖,對於雲上對象存儲的數據湖性能不如HDFS。在0.7.0版本,咱們解決了該問題,即支持了內部Metadata表,此表可存儲索引數據,其餘元數據信息等。git
Metadata表的實現使用了Hudi MOR表,這意味着像其餘任何Hudi表同樣,能夠被壓縮(Compaction)、清理(Clean)、增量更新(incrementally updated)。 並且與其餘項目中的相似實現不一樣,咱們選擇將文件列表等信息索引爲HFile格式(格式可插拔),HFile提供了很好的點查性能,能夠高效獲取分區文件列表等信息。github
在0.7.0版本中,在寫入端配置hoodie.metadata.enable=true
便可構建Metadata表,這樣後續操做將再也不調用fs.listStatus()
接口,咱們引入了一種同步機制來保證對數據timeline中進行的文件新增/刪除操做都會同步到Metadata表。apache
測試有25W個文件的表,Metadata表相比使用Spark併發Listing要快2~3倍,更多設計細節可查閱RFC-15,其餘Metadata表相關配置可參考這裏,提供了參數以便在生產環境中安全使用該特性。api
Hudi最開始設計時依賴Spark,但隨着項目成爲Apache頂級項目,咱們意識到須要抽象內部表格式、表服務、寫入層的代碼以支持更多的引擎。在0.7.0版本,咱們完成了寫入層的解耦,添加了Flink和Java客戶端,如今你可使用HoodieFlinkStreamer
來消費Kafka中的數據,以寫入Hudi的COW表中。安全
HoodieTableMetadata
接口下,該接口能夠多線程/Spark並行執行,該優化能夠在未開啓Metadata表時提高清理、壓縮性能。HoodieWriteCommitKafkaCallback
接口,當每次進行commit後能夠向Kafka中發送事件,以此來觸發派生/ETL數據管道,相似Apache Airflow中的SensorsDefaultHoodieRecordPayload
解決亂序問題;當前默認的OverwriteWithLatestAvroPayload
將覆蓋存儲中已有的值,即便使用較舊值進行upsert。0.7.0版本添加了一個新的DefaultHoodieRecordPayload
和一個有效負載配置hoodie.payload.ordering.field
來指定一個字段,能夠將傳入的upsert記錄與已存儲的記錄進行比較,以決定是否覆蓋。推薦用戶使用這種更新、更靈活的Payload模型。SlashEncodedHourPartitionValueExtractor
同步小時分區至Hive中。hoodie.metadata.enable = true
會話--conf spark.hadoop.hoodie.metadata.enable = true
來容許從元數據中獲取分區的文件列表,而非使用File Listing。prashantwason ,Trevor-zhang,satishkotha,nbalajee,wangxianghu,hddong,nsivabalan,xushiyan,cdmikechen,garyli1019,kwondw,sreeram26,chuangehh,zhedoubushishi,modi95,linshan-ma,Karl-WangSK,bvaradar,liujinhui1994,shenh062326,xushiyan,pratyakshsharma,afilipchik,Kaiux,lw309637554,vinothchandar,dugenkui03,leesf,yanghua,rmpifer,hj2016,guykhazma,bhasudha,hotienvu,n3nash,v3nkatesh,pengzhiwei2018,yui2010,jshmchenxi,danny0405,yui2010,lichang-bd,nbalajee,umehrot2多線程