Spark依赖包加载顺序

在流式计算中对于修改数值的操作或者在 mappartion/foreachPartition 中自定义数据持久化到非主键约束的平台时,就会出现灾难性后果。
一旦出现数据倾斜,启动备用线程执行当前任务,就会出现数据加倍等脏数据。所以在以上场景,无法保证操作幂等性的前提下,不要开启推测执行。

spark 依赖包加载顺序总结:
默认情况下,spark 优先使用 / etc/spark/conf/classpath.txt 里自带的依赖包;
若是找不到则查找用户通过 --jar 提交的依赖包 (位于 driver、executor 的 classpath 里);
若是两个路径下都有相同名字的依赖包(版本不同),则抛出 linked exception 用户解决冲突;
使用 --spark.{driver,executor}.userClassPathFirst = true 优先启用用户提供的依赖包;
使用 --spark.{driver,executor}.extraClassPath = conflict-jar 来解决同名冲突的包依赖;

你可能感兴趣的:(Spark依赖包加载顺序)