SparkSQL 入门简介

1.SparkSQL概述

SparkSQL的前身是Shark,它的底层依赖于Hive,因此其发展受制于Hive的发展,后来项目组将Shark废弃,保留了其中非常优秀的特点:比如内存存储技术动态字节码技术等,重新组织了一个项目,这个项目就是SparkSQL,通过Spark去操作Hive,即Spark-on-Hive,同时在hive里面也推出了一个子模块,是hive的计算引擎基于spark,即hive-on-spark

需要明确的是,sparkCore中的编程模型是RDD,在SparkSQL中的编程模型是DataFrame,在spark1.6之后又做了进一步的升级Dataset

我们把RDD称之为Spark的第一代编程模型,DataFrame成为第二代编程,Dataset则是第三代编程模型。

2.SparkSQL的特点

1) 可集成

混合SQL查询和spark程序

2)统一数据入口

连接任何数据源采用同样的方式

3) 整合Hive

基于已有的数据仓库,执行SQL或者HSQL查询

4)标准连接

提供了JDBC/ODBC的方式连接商业集成工具(如MySQL等)

3. 编程模型

正如上面所说到的,其编程模型是DataFrame或者Dataset,DataFrame就是一张二维表,相比较RDD多了一行额外的信息,即关系型数据库中的表头。而Dataset则集成了RDD与DataFrame两者的优点,包括RDD的强类型推断,以及非常大的lambda表达式和DataFrame的执行优化器。

4.SparkSQL编程的入口

Spark中编程的入口,就是各种各样的Context,在SparkSQL也不例外,Spark1.6以前,SparkSQL唯一的入口就是SQLContext,及其子类HiveContext,在Spark1.6之后,便又提供了一个SQLContext和HiveContext的集成者——SparkSession。此时SparkSession就成为了SparkSQL的入口,当然这些不管是SQLContext还是HiveContext还是SparkSession,其底层仍然依赖的是SparkContext。

需要额外添加的maven依赖:

<dependency>
  <groupId>org.apache.sparkgroupId>
  <artifactId>spark-sql_2.11artifactId>
  <version>2.2.2version>
dependency>

5.SparkSession的创建

val spark=SparkSession.builder().master("local[*]").applName("SparkSQLOps").getOrCreate()

你可能感兴趣的:(Spark)