我正在从Spark 1.3.0迁移到Spark 2.1.1。 之前我能够使用以下内容在Java 1.3.0上创建SparkContext:
SparkConf conf = new SparkConf().setAppName(dsp.getAppName()).setMaster("local").set("spark.driver.allowMultipleContexts", "true");
JavaSparkContext java_sc = new JavaSparkContext(conf);
但是我收到错误“在同一个JVM中检测到多个运行的SparkContexts!”和“org.apache.spark.SparkException: Failed to get broadcast_0_piece0 of broadcast_0"
有人能帮助我吗?
答案 0 :(得分:0)
引用JavaSparkContext的javadoc:
每个JVM只能激活一个SparkContext。您必须在创建新的SparkContext之前停止()活动的SparkContext。
在Scala中,您可以使用SparkContext.getOrCreate从Spark应用程序中的任何位置获取或实例化customerID
并将其注册为单个对象。
getOrCreate():SparkContext 此函数可用于获取或实例化SparkContext并将其注册为单例对象。因为每个JVM只能有一个活动的SparkContext,所以当应用程序可能希望共享SparkContext时,这很有用。
我找不到Java的方法版本,所以也许只使用Scala。
答案 1 :(得分:0)
以下答案似乎适用于我的情况: https://stackoverflow.com/a/34880317/3567232
我所做的只是从已有的SparkContext创建一个新的JavaSparkContext。