Difference between SparkContext, JavaSparkContext, SQLContext, and SparkSession?
如何使用
-
RDD -
JavaRDD -
JavaPairRDD -
Dataset
是否存在将
另一个要点是,RDD表示非结构化数据,强类型数据,而DataFrames表示结构化和松散类型数据。您可以检查
Is there any method to convert or create Context using Sparksession ?
是的。其
Can I completely replace all the Context using one single entry SparkSession ?
是的。您可以从sparkSession中获取相应的顶点。
Does all the functions in SQLContext, SparkContext,JavaSparkContext etc are added in SparkSession?
不直接。您必须获得各自的上下文并加以利用。例如向后兼容性
How to use such function in SparkSession?
获取相应的上下文并加以利用。
How to create the following using SparkSession?
branch-2.1下的spark源代码的解释
SparkContext:
Spark功能的主要入口点。 SparkContext表示与Spark的连接
集群,可用于在该集群上创建RDD,累加器和广播变量。
每个JVM只能激活一个SparkContext。您必须先
创建一个新的。此限制最终可能会消除;有关更多详细信息,请参见SPARK-2243。
JavaSparkContext:
返回[[org.apache.spark.SparkContext]]的Java友好版本
[[org.apache.spark.api.java.JavaRDD]]并与Java集合(而非Scala集合)一起使用。
每个JVM只能激活一个SparkContext。您必须先
创建一个新的。此限制最终可能会消除;有关更多详细信息,请参见SPARK-2243。
SQLContext:
在Spark 1.x中使用结构化数据(行和列)的入口点。
从Spark 2.0开始,此内容已由[[SparkSession]]取代。但是,我们保持课程
这里是为了向后兼容。
SparkSession:
使用Dataset和DataFrame API编程Spark的入口点。
我只会谈论Spark版本2.x。
SparkSession:这是您的spark应用程序的主要入口点。要在您的火花上运行任何代码,这是您应该首先创建的。
1 2 3 4 | from pyspark.sql import SparkSession spark = SparkSession.builder.master("local").appName("Word Count")\\ .config("spark.some.config.option","some-value")\\ .getOrCreate() |
SparkContext:这是SparkSession的内部对象(属性)。它用于与
在大多数情况下,您不需要
获取
1 | val sc = spark.sparkContext |
Spark上下文是Spark API中的类,这是构建spark应用程序的第一步。 spark上下文的功能是在RAM中创建内存,我们称其为驱动程序内存,简而言之就是集群管理,这是执行程序和内核数量的分配。 Spark Context可用于创建RDD和共享变量。要访问它,我们需要创建它的对象。
这样我们可以创建Spark Context :: var sc = new SparkContext()
Spark会话,这是自spark 2.x以来添加的新对象,该对象替代了Sql Context和Hive Context。
之前我们有两个选择,例如一个是Sql Context,这是一种在Dataframe上执行sql操作的方法,第二个是Hive Context,它管理与Hive连接相关的东西,并从/向hive表中获取/插入数据。
自2.x以来,我们可以为Dataframe上的SQL操作创建SparkSession,如果您有与Hive相关的工作,只需调用Method enablehivesupport(),然后就可以将SparkSession用于Dataframe和与hive相关的SQL操作。
这样我们可以在Dataframe
上为SQL操作创建SparkSession
val sparksession = SparkSession.builder()。getOrCreate();
第二种方法是为Dataframe和Hive Operation上的Sql操作创建SparkSession。
val sparkSession = SparkSession.builder()。enableHiveSupport()。getOrCreate()