SparkContext,JavaSparkContext,SQLContext和SparkSession之间的区别?

Mos*_*ani 34 java scala apache-spark rdd apache-spark-dataset

  1. SparkContext, JavaSparkContext, SQLContext和之间有什么区别SparkSession
  2. 是否有任何方法可以使用SparkSession?转换或创建Context ?
  3. 我可以使用一个条目完全替换所有上下文SparkSession吗?
  4. 在所有的功能SQLContext,SparkContextJavaSparkContextSparkSession
  5. 有些功能parallelizeSparkContext和中有不同的行为JavaSparkContext.他们是如何表现的SparkSession
  6. 如何使用SparkSession?创建以下内容?

    • RDD
    • JavaRDD
    • JavaPairRDD
    • Dataset

有没有一种方法可以将a JavaPairRDD转换为a DatasetDataseta JavaPairRDD

Bal*_*raj 34

sparkContext是一个Scala实现入口点,JavaSparkContext是一个java包装器sparkContext.

SQLContext是SparkSQL的入口点,可以从sparkContext2.X,RDD,DataFrame和数据集接收三个不同的数据抽象.自Spark 2.xx以来,所有三个数据抽象统一, SparkSession是Spark的统一入口点.

另外需要注意的是,RDD适用于非结构化数据,强类型数据和DataFrame适用于结构化和松散类型的数据.你可以检查一下

有没有使用Sparksession转换或创建Context的方法?

是.它sparkSession.sparkContext()和SQL,sparkSession.sqlContext()

我可以使用一个条目SparkSession完全替换所有Context吗?

是.你可以从sparkSession获得相应的上下文.

是否在SparkSession中添加了SQLContext,SparkContext,JavaSparkContext等中的所有函数?

不是直接的.你必须得到各自的上下文并使用它.像向后兼容性

如何在SparkSession中使用这样的功能?

获得各自的背景并利用它.

如何使用SparkSession创建以下内容?

  1. RDD可以从中创建 sparkSession.sparkContext.parallelize(???)
  2. JavaRDD同样适用于此,但在java实现中
  3. JavaPairRDD sparkSession.sparkContext.parallelize(???).map(//making your data as key-value pair here is one way)
  4. 如果sparkSession是结构化数据,则数据集是数据集.


小智 11

分支2.1下的spark源代码说明

SparkContext: Spark功能的主要入口点.SparkContext表示与Spark群集的连接,可用于在该群集上创建RDD,累加器和广播变量.

每个JVM只能激活一个SparkContext.stop()在创建新的SparkContext之前,您必须使用它.最终可能会删除此限制; 有关详细信息,请参阅SPARK-2243.

JavaSparkContext: [[org.apache.spark.SparkContext]]的Java友好版本,返回[[org.apache.spark.api.java.JavaRDD]]并使用Java集合而不是Scala集合.

每个JVM只能激活一个SparkContext.stop()在创建新的SparkContext之前,您必须使用它.最终可能会删除此限制; 有关详细信息,请参阅SPARK-2243.

SQLContext: 在Spark 1.x中处理结构化数据(行和列)的入口点.

从Spark 2.0开始,它被[[SparkSession]]取代.但是,为了向后兼容,我们将此类保留在此处.

SparkSession: 使用Dataset和DataFrame API编程Spark的入口点.


Gau*_*hah 6

我将只讨论Spark 2.x 版

SparkSession:它是您的Spark应用程序的主要入口点。要在 Spark 上运行任何代码,这是您应该创建的第一件事。

from pyspark.sql import SparkSession
spark = SparkSession.builder.master("local").appName("Word Count")\
.config("spark.some.config.option", "some-value")\
.getOrCreate()
Run Code Online (Sandbox Code Playgroud)

SparkContext:它是SparkSession的内部对象(属性)。它用于交互Low-Level API通过SparkContext您可以创建RDD,accumlatorBroadcast variables

在大多数情况下,您不需要SparkContext. 你可以SparkContextSparkSession

val sc = spark.sparkContext
Run Code Online (Sandbox Code Playgroud)