在流式計(jì)算中對(duì)于修改數(shù)值的操作或者在 mappartion/foreachPartition 中自定義數(shù)據(jù)持久化到非主鍵約束的平臺(tái)時(shí),就會(huì)出現(xiàn)災(zāi)難性后果。
一旦出現(xiàn)數(shù)據(jù)傾斜,啟動(dòng)備用線程執(zhí)行當(dāng)前任務(wù),就會(huì)出現(xiàn)數(shù)據(jù)加倍等臟數(shù)據(jù)。所以在以上場(chǎng)景,無(wú)法保證操作冪等性的前提下,不要開(kāi)啟推測(cè)執(zhí)行。
spark 依賴包加載順序總結(jié):
默認(rèn)情況下,spark 優(yōu)先使用 / etc/spark/conf/classpath.txt 里自帶的依賴包;
若是找不到則查找用戶通過(guò) --jar 提交的依賴包 (位于 driver、executor 的 classpath 里);
若是兩個(gè)路徑下都有相同名字的依賴包(版本不同),則拋出 linked exception 用戶解決沖突;
使用 --spark.{driver,executor}.userClassPathFirst = true 優(yōu)先啟用用戶提供的依賴包;
使用 --spark.{driver,executor}.extraClassPath = conflict-jar 來(lái)解決同名沖突的包依賴;