java - SparkContext、JavaSparkContext、SQLContext和SparkSession的区别?

标签 java scala apache-spark rdd apache-spark-dataset

  1. SparkContext, JavaSparkContext, SQLContextSparkSession 有什么区别?
  2. 是否有任何方法可以使用 SparkSession 转换或创建上下文?
  3. 我可以使用一个条目 SparkSession 完全替换所有上下文吗?
  4. SQLContextSparkContextJavaSparkContext中的所有函数是否也在SparkSession中?
  5. parallelize 等一些函数在SparkContextJavaSparkContext 中具有不同的行为。它们在 SparkSession 中的表现如何?
  6. 如何使用 SparkSession 创建以下内容?

    • RDD
    • JavaRDD
    • JavaPairRDD
    • 数据集

有没有一种方法可以将 JavaPairRDD 转换为 Dataset 或将 Dataset 转换为 JavaPairRDD

最佳答案

sparkContext 是 Scala 实现入口点,JavaSparkContextsparkContext 的 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?

  1. 可以从sparkSession.sparkContext.parallelize(???)
  2. 创建RDD
  3. JavaRDD 同样适用于此,但在 java 实现中
  4. JavaPairRDD sparkSession.sparkContext.parallelize(???).map(//在这里将数据作为键值对是一种方法)
  5. 如果是结构化数据,sparkSession返回的Dataset就是Dataset。

关于java - SparkContext、JavaSparkContext、SQLContext和SparkSession的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43802809/

相关文章:

java - 如何将电话联系人号码与 Firebase 注册号码进行比较?

java - 如何访问 Adapter 类中的 Activity 对象

scala - Spark 1.6:将数据帧存储到hdfs中的多个csv文件中(按ID划分)

scala - 如何确定传递给宏的表达式是否始终产生相同的值?

Scala:在扩展类时预初始化val

apache-spark - 如何将聚合数据添加到 Apache Spark 中的原始数据集?

python - 如何在 PySpark 中删除 RDD 以释放资源?

java - 隐藏或禁用 WebView 软键盘 Go/Done/Enter 按钮

java - Android Admob 请求持续增加

scala - 在 Spark 中使用前导窗口函数时是否可以忽略空值