sparkContext JavaSparkContext SQLContext SparkSession之间的区别?
-
sparkContext,
javaSparkContext,
SQLContext
和SparkSession
什么SparkSession
。 - 有没有使用
Sparksession
转换或创建Context的方法? - 我可以使用一个条目
SparkSession
完全替换所有Context吗? - 是否在
SQLContext
中添加了SparkSession
,SparkContext
,JavaSparkContext
等中的所有函数? - 像
parallelize
这样的函数在SparkContext
和JavaSparkContext
有不同的用法。 如何在SparkSession
使用这样的function? -
如何使用
SparkSession
创建以下SparkSession
?- RDD
- JavaRDD
- JavaPairRDD
- 数据集
有没有方法将JavaPairRDD
转换为Dataset
或Dataset
到JavaPairRDD
?
sparkContext
是一个Scala实现入口点, JavaSparkContext
是JavaSparkContext
的java包装器。
SQLContext
是SQLContext
的入口点,可以从sparkContext
接收sparkContext
,RDD,DataFrame和Data-set是三种不同的数据抽象。自Spark 2.xx SparkSession
,所有三个数据抽象统一, SparkSession
是统一入口火花点。
另外需要注意的是,RDD适用于非结构化数据,强类型数据和DataFrame适用于结构化和松散类型的数据。 你可以查一下
有没有使用Sparksession转换或创建Context的方法?
是。 它的sparkSession.sparkContext()
和SQL, sparkSession.sqlContext()
我可以使用一个条目SparkSession完全替换所有Context吗?
是。 你可以从sparkSession获得相应的上下文。
是否在SparkSession中添加了SQLContext,SparkContext,JavaSparkContext等中的所有函数?
不是直接的。 你必须得到各自的上下文并使用它。像向后兼容性
如何在SparkSession中使用这样的function?
获得各自的背景并使用它。
如何使用SparkSession创建以下内容?
- 可以从
sparkSession.sparkContext.parallelize(???)
创建RDD - JavaRDD同样适用于此,但在java实现中
- JavaPairRDD
sparkSession.sparkContext.parallelize(???).map(//making your data as key-value pair here is one way)
- 如果sparkSession是结构化数据,则数据集是数据集。
分支2.1下的spark源代码说明
SparkContext: Sparkfunction的主要入口点。 SparkContext表示与Spark群集的连接,可用于在该群集上创建RDD,累加器和广播变量。
每个JVM只能激活一个SparkContext。 您必须在创建新的SparkContext之前stop()
活动的SparkContext。 最终可能会删除此限制; 有关详细信息,请参阅SPARK-2243。
JavaSparkContext: [[org.apache.spark.SparkContext]]的Java友好版本,返回[[org.apache.spark.api.java.JavaRDD]]并使用Java集合而不是Scala集合。
每个JVM只能激活一个SparkContext。 您必须在创建新的SparkContext之前stop()
活动的SparkContext。 最终可能会删除此限制; 有关详细信息,请参阅SPARK-2243。
SQLContext:在Spark 1.x中处理结构化数据(行和列)的入口点。
从Spark 2.0开始,它被[[SparkSession]]取代。 但是,为了向后兼容,我们将此类保留在此处。
SparkSession:使用Dataset和DataFrame API编程Spark的入口点。
Spark Context是Spark API中的Class,它是构建spark应用程序的第一个阶段。 spark上下文的function是在RAM中创建内存,我们将其称为驱动程序内存,分配执行程序和内核的数量,简而言之就是集群管理。 Spark Context可用于创建RDD和共享变量。 要访问它,我们需要创建它的对象。
这样我们就可以创建Spark Context :: var sc = new SparkContext()
Spark Session这是自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()