Spark 1.x和2.x中各种sparkcontexts之间的差异

时间:2017-08-28 07:34:20

标签: apache-spark apache-spark-sql spark-dataframe

任何人都可以解释SparkContextSQLContextHiveContextSparkSession EntryPoints与每个用户的区别。

2 个答案:

答案 0 :(得分:2)

SparkContext用于Spark1.x和Spark2.x上的基本RDD API

SparkSession用于Spark2.x上的DataFrame API和Struct Streaming API

SQLContext& HiveContext用于Spark1.x上的DataFrame API,不推荐使用Spark2.x

答案 1 :(得分:0)

Spark Context是Spark API中的Class,它是构建spark应用程序的第一个阶段。 spark上下文的功能是在RAM中创建内存,我们将其称为驱动程序内存,分配执行程序和内核的数量,简而言之就是集群管理。 Spark Context可用于创建RDD和共享变量。 SparkContext是一个访问它的类,我们需要创建它的对象。

这样我们就可以创建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()