Spark----SparkSQL之SparkSession

SparkSession 是 Spark-2.0 引如的新概念。SparkSession 为用户提供了统一的切入点,来让用 户学习 Spark 的各项功能。 
 
在 Spark 的早期版本中,SparkContext 是 Spark 的主要切入点,由于 RDD 是主要的 API,我 们通过 sparkContext来创建和操作 RDD。对于每个其他的 API,我们需要使用不同的 context。 例如:

对于 Spark Streaming,我们需要使用 StreamingContext

对于 Spark SQL,使用 SQLContext

对于 Hive,使用 HiveContext 

但是随着 DataSet 和 DataFrame 的 API 逐渐成为标准的 API,就需要为他们建立接入点。所 以在 Spark2.0 中,引入 SparkSession 作为 DataSet 和 DataFrame API 的切入点,SparkSession 封装了 SparkConf、SparkContext 和 SQLContext。为了向后兼容,SQLContext 和 HiveContext 也被保存下来。    

SparkSession 实质上是 SQLContext 和 HiveContext 的组合,所以在 SQLContext 和 HiveContext 上可用的 API 在 SparkSession 上同样是可以使用的。SparkSession 内部封装了 SparkContext, 所以计算实际上是由 SparkContext 完成的。 

特点: 

---- 为用户提供一个统一的切入点使用 Spark 各项功能

---- 允许用户通过它调用 DataFrame 和 Dataset 相关 API 来编写程序

---- 减少了用户需要了解的一些概念,可以很容易的与 Spark 进行交互

---- 与 Spark 交互之时不需要显示的创建 SparkConf、SparkContext 以及 SQlContext,这些对 象已经封闭在 SparkSession 中

---- SparkSession 提供对 Hive 特征的内部支持:用 HiveQL 写 SQL 语句,访问 Hive UDFs,从 Hive 表中读取数据。

SparkSession 的创建: 

1、如果是在 Spark-Shell 中  

SparkSession 会被自动初始化一个对象叫做 spark,为了向后兼容,Spark-Shell 还提供了一个 SparkContext 的初始化对象,方便用户操作: 

[hadoop@hadoop02 ~]$ ~/apps/spark-2.3.1-bin-hadoop2.7/bin/spark-shell \ 
> --master spark://hadoop02:7077 \ 
> --executor-memory 512m \ 
> --total-executor-cores 1 

Spark----SparkSQL之SparkSession_第1张图片

2、如果是在 IDEA 中创建 SparkSession 

Spark----SparkSQL之SparkSession_第2张图片

你可能感兴趣的:(Spark,SparkSQL)