Pra*_*han 4 java thread-safety apache-spark rdd
这可能是一个愚蠢的问题。不过,我想知道我是否有这样的东西 - rdd.mapPartitions(func)。逻辑应该func是线程安全的吗?
谢谢
简短的回答是否定的,它不必是线程安全的。
这样做的原因是 Spark 在分区之间划分数据。然后,它为每个分区创建一个任务,并且您编写的函数将在该特定分区中作为单线程操作运行(即没有其他线程可以访问相同的数据)。
也就是说,您必须确保不会通过访问非 RDD 数据的资源来手动创建线程“不安全”。例如,如果您创建一个静态对象并访问它,则可能会导致问题,因为多个任务可能在同一个执行程序 (JVM) 中运行并访问它。也就是说,除非您确切知道自己在做什么,否则您一开始就不应该做这样的事情......