場景:比如說一個Job要對100組資料進行處理,當處理了60條的時候由網路例外等原因導致了Job Aborte,即部分資料已被處理(p.s. 需要處理的是Job fail之后的資料)
可能的解決方法:
1. 將已處理的資料根據job全部回滾,然后重新運行Job
2. 根據導致job失敗的checkpoint來進行類似斷點續傳的操作。
3. 。。。。。。
問題:當前業內可行的有哪些方案,以及稍微具體些的實作方案,如上面2中如何可以續傳的話應該如何獲取這個checkpoint等,最好能結合一些簡單的講解,本人菜鳥,也就這兩天才開始了解Spark,希望大神能給指條明路。
uj5u.com熱心網友回復:
血與淚的教訓:1、處理源表的資料,結果千萬不要回寫到源表。源表必須是只讀。
2、如果對資料完整性有要求,可以這樣:1、寫入結果表前,先洗掉掉重復資料(比如我們算每天的一些資料,先洗掉結果表中已有的當天結果資料,再寫入新的)2、處理中的時候寫入臨時表。等處理完后,再從臨時表寫入結果表。
3、利用客觀的排他欄位例如時間、自增ID去控制源資料范圍。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/65980.html
標籤:Spark
上一篇:linux-day01
下一篇:解決方法:Grafana6.x使用grafana-cli命令在線安裝zabbix插件,新增zabbix資料源出現報錯
