这个问题在面试中被问到每个 JVM 允许创建多少个 sparkcontext,为什么? 我知道每个 jvm 只允许一个 sparkContext 但不明白为什么? 谁能帮我理解“每个 jvm 一个 sparkcontext”背后的原因?
最佳答案
答案很简单——它并不是为处理多个上下文而设计的。 Quoting Reynold Xin :
I don't think we currently support multiple SparkContext objects in the same JVM process. There are numerous assumptions in the code base that uses a a shared cache or thread local variables or some global identifiers which prevent us from using multiple SparkContext's.
在更广泛的意义上 - 单个应用程序(使用 main
),单个 JVM - 是 Java 世界中的标准方法(Is there one JVM per Java application?,Why have one JVM per application?)。应用服务器选择不同的方法,但这是异常(exception),而不是规则。
从实际的角度来看——处理单个数据密集型应用程序已经够痛苦的了(调整 GC、处理泄漏资源、通信开销)。从长远来看,无法调整和管理在单个 JVM 中运行的多个 Spark 应用程序。
最后,拥有多个上下文不会有太多用处,因为每个分布式数据结构都与其上下文紧密相关。
关于apache-spark - 为什么每个 JVM 只允许一个 SparkContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48087617/