从SparkSession获取JavaSparkContext

moe*_*moe 13 java apache-spark

我正在使用一个SparkSession来运行我的spark应用程序,因为我使用了很多spark-sql功能.我想用它JavaSparkContext来从列表中创建一个RDD.但通过会议,我只能得到一个普通的 SparkContext.有没有办法在这个方向上改变背景?

Ser*_*hiy 27

确定后SparkContext,您可以使用:

SparkContext sc = ...
JavaSparkContext jsc = JavaSparkContext.fromSparkContext(sc);
Run Code Online (Sandbox Code Playgroud)

这将返回您的新实例JavaSparkContext,但只要您只维护一个活动实例就没有问题SparkContext.


Der*_*k_M 9

是的,你可以用这样的spark会话来做到这一点:

   val spark = SparkSession.builder()
         .config(sparkConf)
         .getOrCreate()

    val jsc = new JavaSparkContext(spark.sparkContext)
Run Code Online (Sandbox Code Playgroud)

或者在java中,它将是:

SparkSession spark = SparkSession.builder().config(sparkConf).getOrCreate();
JavaSparkContext jsc = new JavaSparkContext(spark.sparkContext());
Run Code Online (Sandbox Code Playgroud)

  • 使用声纳的注意事项:S2095 希望我们在使用 new 创建时关闭 JavaSparkContext。只需使用“JavaSparkContext.fromSparkContext(sc)”即可 (2认同)