SparkContext,
JavaSparkContext,
SQLContext
和SparkSession
有什么区别?- 是否有任何方法可以使用
SparkSession
转换或创建上下文? - 我可以使用一个条目
SparkSession
完全替换所有上下文吗? SQLContext
、SparkContext
、JavaSparkContext
中的所有函数是否也在SparkSession
中?parallelize
等一些函数在SparkContext
和JavaSparkContext
中具有不同的行为。它们在SparkSession
中的表现如何?如何使用
SparkSession
创建以下内容?RDD
JavaRDD
JavaPairRDD
数据集
有没有一种方法可以将 JavaPairRDD
转换为 Dataset
或将 Dataset
转换为 JavaPairRDD
?
最佳答案
sparkContext
是 Scala 实现入口点,JavaSparkContext
是 sparkContext
的 java 包装器。
SQLContext
是 SparkSQL 的入口点,可以从 sparkContext
接收。在 2.x.x 之前,RDD、DataFrame 和 Data-set 是三种不同的数据抽象。因为Spark 2.x.x,三个数据抽象统一,SparkSession
是Spark的统一入口。
另外需要注意的是,RDD 用于非结构化数据、强类型数据,而 DataFrames 用于结构化和松散类型数据。您可以check
Is there any method to convert or create Context using Sparksession ?
是的。它的 sparkSession.sparkContext()
和 SQL,sparkSession.sqlContext()
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?
- 可以从
sparkSession.sparkContext.parallelize(???)
创建RDD
- JavaRDD 同样适用于此,但在 java 实现中
- JavaPairRDD
sparkSession.sparkContext.parallelize(???).map(//在这里将数据作为键值对是一种方法)
- 如果是结构化数据,sparkSession返回的Dataset就是Dataset。
关于java - SparkContext、JavaSparkContext、SQLContext和SparkSession的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43802809/