SparkSession就是设计出来合并SparkContext和SQLContext的。我建议能用SparkSession就尽量用。如果发现有些API不在SparkSession中,你还是可以通过SparkSession来拿到SparkContext和SQLContex的。

SparkSession-Spark的一个全新的切入点 
  SparkSession是Spark 2.0引如的新概念。SparkSession为用户提供了统一的切入点,来让用户学习spark的各项功能。 
  在spark的早期版本中,SparkContext是spark的主要切入点,由于RDD是主要的API,我们通过sparkcontext来创建和操作RDD。对于每个其他的API,我们需要使用不同的context。例如,对于Streming,我们需要使用StreamingContext;对于sql,使用sqlContext;对于Hive,使用hiveContext。但是随着DataSet和DataFrame的API逐渐成为标准的API,就需要为他们建立接入点。所以在spark2.0中,引入SparkSession作为DataSet和DataFrame API的切入点,SparkSession封装了SparkConf、SparkContext和SQLContext。为了向后兼容,SQLContext和HiveContext也被保存下来。 
   
  SparkSession实质上是SQLContext和HiveContext的组合(未来可能还会加上StreamingContext),所以在SQLContext和HiveContext上可用的API在SparkSession上同样是可以使用的。SparkSession内部封装了sparkContext,所以计算实际上是由sparkContext完成的。

下面我将讨论如何创建和使用SparkSession。 
创建SparkSession 
  SparkSession的设计遵循了工厂设计模式(factory design pattern),下面代码片段介绍如何创建 
   
=============scala========

SparkSession
val sparkSession = SparkSession.builder.master("local").appName("spark session example").getOrCreate()
  • 1
  • 2
  • 3
  • 4
  • 5

上面代码类似于创建一个SparkContext,master设置为local,然后创建了一个SQLContext封装它。如果你想创建hiveContext,可以使用下面的方法来创建SparkSession,以使得它支持Hive:

val sparkSession = SparkSession.builder.master("local").appName("spark session example").enableHiveSupport().getOrCreate()
  • 1
  • 2
  • 3
  • 4
  • 5

enableHiveSupport 函数的调用使得SparkSession支持hive,类似于HiveContext。 
使用SparkSession读取数据 
创建完SparkSession之后,我们就可以使用它来读取数据,下面代码片段是使用SparkSession来从csv文件中读取数据:

val df = sparkSession.read.option("header","true").csv("src/main/resources/sales.csv")
  • 1
  • 2

上面代码非常像使用SQLContext来读取数据,我们现在可以使用SparkSession来替代之前使用SQLContext编写的代码。下面是完整的代码片段:

package com.iteblogimport org.apache.spark.sql.SparkSession/*** Spark Session example**/
object SparkSessionExample {def main(args: Array[String]) {val sparkSession = SparkSession.builder.master("local").appName("spark session example").getOrCreate()val df = sparkSession.read.option("header","true").csv("src/main/resources/sales.csv")df.show()}}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

Spark 2.0现在还支持SQLContext和HiveContext吗? 
并没有,Spark的设计是向后兼容的,所有SQLContext和HiveContext相关的API在Spark 2.0还是可以使用的。不过既然有SparkSession了,所以大家还是尽量在Spark 2.0中使用它。

=============java版========

SparkSession spark = SparkSession.builder().master("yourmaster").appName("UnderstandingSparkSession").config("spark.some.config.option", "config-value").getOrCreate();当然你也可以通过SparkSession来创建SparkContext。
JavaSparkContext sc = new JavaSparkContext(spark.sparkContext());
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

源代码:SparkSession的的创建 http://blog.csdn.net/qq_21383435/article/details/78751156

SparkSession与SparkContext SparkConf SQLContext HiveContext StreamingContext相关推荐

  1. SparkSQL DataFrame进阶篇

    SparkSQL DataFrame基础篇 SparkSQL DataFrame进阶篇 1.创建SparkSession[2.0]和 SQLContext实例[1.x] 1.创建SparkSessio ...

  2. Spark入门实战系列--6.SparkSQL(下)--Spark实战应用

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.运行环境说明 1.1 硬软件环境 l  主机操作系统:Windows 64位,双核4线程 ...

  3. sparkSQL1.1入门

    http://blog.csdn.net/book_mmicky/article/details/39288715 2014年9月11日,Spark1.1.0忽然之间发布.笔者立即下载.编译.部署了S ...

  4. centos7下载spark连接mysql数据库提取数据(pyspark,Scala,python独立执行)

    原文连接: http://dblab.xmu.edu.cn/blog/1724-2/ 原文连接:https://mapr.com/support/s/article/PySpark-to-MySQL- ...

  5. SparkSQL之“Dataset和Dataframe

    package zsyh.sprk.coreimport org.apache.spark.sql.{DataFrame, Dataset, SparkSession} case class Pers ...

  6. spark数据查询语句select_sparksql读取hive表中数据

    文章目录 spark sql与hive本地调试 new HiveContext空指针异常 权限: 异常 执行select查询的时候找不到host spark sql与hive本地调试 将hive-si ...

  7. Spark SQL 1.x之Hive Context

    使用SparkSQL时,并不需要搭建一个Hive,只需要一个HiveSite就可以 添加Hive配置文件 将Hive中的hive-site.xml复制到spark中的conf文件夹下. 添加依赖 在p ...

  8. OpenShift 4 - 运行Spark和Zeppelin大数据应用

    <OpenShift 4.x HOL教程汇总> 创建项目 oc new-project spark-cluster oc adm policy add-scc-to-user anyuid ...

  9. 贵州烟草大数据之一:零售户聚类

    1 思路 考虑零售户的总销售量,总库存量两个特征,用这两个特征对零售户进行聚类,找出哪些零售户供不应求.哪些零售户供过于求.合理安排配货. 2 数据存准备 在hive中创建两张表,之前已经导入了销售数 ...

  10. SparkContext、SparkConf和SparkSession的初始化

    SparkContext 和 SparkConf 任何Spark程序都是SparkContext开始的,SparkContext的初始化需要一个SparkConf对象,SparkConf包含了Spar ...

最新文章

  1. R语言ggplot2可视化:使用ggplot2绘制按时间顺序排列的时间线图(chronological timeline plot)
  2. 数据蒋堂 | 内存数据集产生的隐性成本
  3. 实时获取vuex更新的新数据_三网运营商大数据实时截流,网站手机号获取
  4. matlab pdist函数官方详解
  5. apache 与 php-fpm 几种处理方式
  6. python换成中文版_在python中如何将“\”替换为“/”?
  7. java B2B2C Springcloud电子商务平台源码-服务网关过滤器
  8. QT的QSqlQueryModel类的使用
  9. Struts2的国际化
  10. js导航条 二级滑动 模仿块级作用域
  11. php umount强制,php foreach 參數強制類型轉換的問題 | 學步園
  12. JAVA 中序遍历的非递归栈实现
  13. angular语言前端开发_详解使用angular-cli发布i18n多国语言Angular应用_唇印_前端开发者...
  14. Android中Context的详细介绍
  15. robocode_摇滚,袜子,Robocode!
  16. 实验5 振幅调制(集成乘法器幅度调制电路)
  17. logo字体设计心法
  18. 值得收藏!教你如何在火星直播中使用分享码
  19. openstack instance resize
  20. 计算机快捷键大全截图,电脑截图快捷键是哪个?电脑快捷键使用大全

热门文章

  1. 如何解决Mac上隐藏红色通知标记?技巧来啦
  2. Mac上自带的语音功能怎么用?让你的mac读给你听
  3. iOS底层探索之类的加载(三): attachCategories分析
  4. 教你高效管理CrossOver容器
  5. Intellij IDEA 2016 使用
  6. 《MPLS在Cisco IOS上的配置》一2.3 配置命令参考
  7. 流媒体技术学习笔记之(十六)H264编码profile level控制
  8. android listview多视图嵌套多视图
  9. scala中的协变和逆变
  10. 微博队列memcacheq 服务安装与原理