目前的資料部門從組織架構,從個人的負責的方向,處理的任務上,基於現在的資料架構,以及數倉的建設,看起來比較合理,但是也存在非常大的問題。
目前的資料架構是從客戶端上報資料,通過logserver輸出到kafka,這時分為了兩步取走,第一步通過flink任務,將資料寫到hdfs上,然後將資料通過add partition的方式新增到hive裡面。第二步是通過flink實時任務,將資料寫到ck,或者其他的kakfa做一些開發。這個鏈路存在哪些問題呢?
資料的質量
如何保證實時資料和離線資料是一致的。在開發中如果兩個資料出現不一致的情況下需要費人力去修復資料。或者是新增了指標後如果發現不對,需要回滾任務,對下游的影響很大。
資料的落地成本
通過一些列的鏈路將資料儲存在hive中,需要用到flink團隊開發很多的flink任務,以及排程任務將partition加到hive中。人力成本高,而且會存在小檔案問題。
資料的時間成本
上面寫了一些鏈路上的問題,那麼我們在使用中有哪些問題呢。
不能支援事務
不能併發讀寫,我在寫資料的時候會報file not found 異常
不支援更新 update delete操作,有些髒資料我想手動更新只能是重跑整個分割槽或者整個表。
不支援基於歷史資料的查詢
如下圖所示
我們直接通過spark任務將資料存放在 delta中。
delta架構可以輕鬆解決掉上面的問題
支援事務,併發讀寫。
批流合併
低延遲,高可用
支援資料回滾,支援歷史資料根據版本/時間戳查詢,及時資料更新了,還能查到歷史資料
我理解下來,可以將delta看做是一種儲存方式,類似於parquet,通過這種儲存,實現了支援事務,併發讀寫,支援資料回滾,版本查詢等高階特性。
delta只是一種儲存方式,可以保證資料的高可用,並不能替換到數倉人員,只是可以將hive這個工具替換掉。需要將傳統的lamda架構的思想扔掉。但是傳統etl模式還在。
因為將ods資料儲存在delta中,並不能非常清晰的提供給分析師來用,這種資料在delta中被稱為bronze,需要進行資料的加工,細化,公升級為silver/gold的資料。也就是模擬於數倉中的
ods/dm/dw分層的概念,這些傳統概念還在,所以不能替換掉數倉。還是需要進行資料的加工,這是在加工的過程中,我可以更加專注於資料,而不是生產資料的過程。
只能通過spark執行。
對於sql的支援不夠完善,大部分功能還是通過api
首先我們要把現在的架構去掉。包括資料傳輸,資料倉儲中的資料,包括數倉開發的表,當然這是很大概念,所以我們需要先從乙個topic開始,建立delta的表,建立delta的數倉。進行和目前線上的對比
這時就會遇到一些問題:
未知。。
如果只是將一張數倉加工的dw/dm的parquet存的表,修改為delta的話,其實也可以。能夠保證此表支援acid,支援歷史資料查詢,對一些不緊急不重要並且資料很大的可以嘗試。
理解資料集
資料集通常是長方形資料矩陣,行代表乙個觀察值,列代表乙個變數,下表提供了乙個假想的病人資料集 不同的規則有不同的資料集行列名稱。資料統計把它們成為乙個觀察值和變數,資料庫分析員把它們成為一條記錄和域,資料探勘和機器學習把它們成為乙個樣例和屬性。我們將會在本書中用乙個觀察值和變數這個術語。你可以分清資...
理解資料結構
最近在學習各種資料結構,於是就在想,為什麼我們需要資料結構呢?為什麼要設計這麼多資料結構?資料結構到底解決了我們什麼樣的問題?我們提到 資料結構 時,一般是指電腦科學中的乙個概念,但是從本質上講,資料結構應該是指對資料的一種組織方式。既然如此,我們沒必要非在電腦科學領域中討論 概念本身,把它放在其它...
機器閱讀理解資料集
總結f p q af p,q a f p,q a這裡的 f 就是閱讀理解的模型。模型的發展離不開資料集,資料集的不斷進步直接地推動了該領域的研究進展。根據問題 q 和回答 a 的形式,機器閱讀理解中的資料集可以分為最早的完型填空形式 cloze style 多項選擇 multi choice 區域 ...