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 来解决同名冲突的包依赖;

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容