2017-05-05 303 views
3

sparkContext javaSparkContext SQLContext SparkSession。有什么区别?是否有任何方法使用Sparksession转换或创建Context?我可以使用单个条目SparkSession完全替换所有上下文吗?在SparkSession中是否添加了SQLContext,SparkContext,JavaSparkContext等中的所有函数?一些函数如“并行化”在SparkContext和JavaSparkContext中有不同的用法。如何在SparkSession中使用这样的功能?如何使用SparkSession创建以下内容? 1. RDD 2. JavaRDD 3. JavaPairRDD 4.数据集sparkContext JavaSparkContext SQLContext SparkSession之间的区别?

是否有任何变换JavaPairRDD到数据集或数据集到JavaPairRDD方法?从火花源代码

回答

7

sparkContext是一个Scala实现入口点,而JavaSparkContext是一个包装为sparkContext的java。

SQLContext是SparkSQL的入口点,其可以接收从sparkContext。之前2.xx的,RDD,数据帧和数据集进行了三个不同的数据abstractions.Since火花2.xx的,所有这三个数据抽象是统一的,SparkSession是Spark的统一切入点。

另外需要注意的是,RDD意味着非结构化数据,强类型数据和DataFrames适用于结构化和松散类型的数据。你可以check

是否有任何方法转换或使用Sparksession创建上下文?

是的。其sparkSession.sparkContext()和SQL,sparkSession.sqlContext()

我可以使用一个单一的条目SparkSession完全替换所有上下文吗?

是的。你可以从sparkSession中获得相应的方面。

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

不直接。你必须得到各自的背景和利用它。像向后compactablity

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

得到相应的上下文并利用它。

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

  1. RDD可以从sparkSession.sparkContext.parallelize(???)
  2. JavaRDD同样适用于这一点,但在java中implementtaion
  3. JavaPairRDD sparkSession.sparkContext.parallelize(???).map(//making your data as key-value pair here is one way)
  4. 数据集什么sparkSession回报是数据集,如果它是结构化数据被创建。
2

说明下分支-2.1

SparkContext: 主入口点火花功能。 SparkContext代表到Spark的连接,可用于在该群集上创建RDD,累加器和广播变量。

每个JVM只能有一个SparkContext处于活动状态。您必须在 之前创建一个新的活动SparkContext stop()。这个限制最终可能会被删除;有关更多详细信息,请参阅SPARK-2243。

JavaSparkContext:中返回 [org.apache.spark.api.java.JavaRDD] S和与Java集合作品[org.apache.spark.SparkContext] 一个Java的版本而不是斯卡拉的。

每个JVM只能有一个SparkContext处于活动状态。您必须在 之前创建一个新的活动SparkContext stop()。这个限制最终可能会被删除;有关更多详细信息,请参阅SPARK-2243。

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

从Spark 2.0开始,它被替换为[[SparkSession]]。但是,为了向后兼容,我们在此保留 类。

SparkSession: 使用数据集和DataFrame API编程Spark的入口点。