Categories
程式開發

基於TiSpark 的海量數據批量處理技術


熟悉TiSpark 的人都知道,TiSpark 是Spark 的一個插件,它其實就是給予了Spark 能夠去訪問TiDB 底層分佈式存儲引擎TiKV 或者TiFlash 的能力。之前我們一直在解決讀的問題,寫問題並沒有付出太多的時間去解決。今天就給大家揭秘,我們是怎樣使用TiSpark 去實現海量數據批處理,然後寫入到TiDB 裡面去的。

傳統批處理vs TiSpark 的批處理

在介紹TiSpark 之前,我們首先來回顧一下傳統批處理架構。

基於TiSpark 的海量數據批量處理技術 1

對於傳統批處理架構而言,首先要有一個數據,這個數據可以是用戶的CSV 文件,也可以是用戶從TiDB 或MySQL,或者是其它異構數據庫裡面讀出來的數據。在拿到這些數據之後,它首先需要做的是任務切分,對於每一個批次的任務,每一個小批的任務,分別去進行數據處理,然後再進行分批提交,最後再去寫入到TiDB 裡面。

熟悉數據庫的人可能都知道,這一套架構有一個致命的問題:就是它沒有辦法通過數據庫來保證事務的ACID 特性。傳統的批處理架構,都需要引入一些任務表的機制,來追踪每一個子任務的成功狀態。如果說子任務表中有一個狀態是失敗的,那可能就需要把整個任務全部回滾。甚至在一些情況下,都需要人工去介入。對於TiSpark 來說,則不需要這樣。

原文鏈接:【https://www.infoq.cn/article/cMIMCOYG5rg0ehmcd5lM】。未經作者許可,禁止轉載。