sparkContext JavaSparkContext SQLContext SparkSession之间的区别?

  1. sparkContext, javaSparkContext, SQLContextSparkSession什么SparkSession
  2. 有没有使用Sparksession转换或创建Context的方法?
  3. 我可以使用一个条目SparkSession完全替换所有Context吗?
  4. 是否在SQLContext中添加了SparkSessionSparkContextJavaSparkContext等中的所有函数?
  5. parallelize这样的函数在SparkContextJavaSparkContext有不同的用法。 如何在SparkSession使用这样的function?
  6. 如何使用SparkSession创建以下SparkSession

    • RDD
    • JavaRDD
    • JavaPairRDD
    • 数据集

有没有方法将JavaPairRDD转换为DatasetDatasetJavaPairRDD

sparkContext是一个Scala实现入口点, JavaSparkContextJavaSparkContext的java包装器。

SQLContextSQLContext的入口点,可以从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创建以下内容?

  1. 可以从sparkSession.sparkContext.parallelize(???)创建RDD
  2. JavaRDD同样适用于此,但在java实现中
  3. JavaPairRDD sparkSession.sparkContext.parallelize(???).map(//making your data as key-value pair here is one way)
  4. 如果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()