【Spark】Day03:Spark SQL:DataFrame、DataSet、sql操作、项目实战(区域热门商品)
一、概述
1、介绍
将Spark SQL转换成RDD,然后提交到集群执行,执行效率非常快
提供了2个编程抽象,类似Spark Core中的RDD:DataFrame&DataSet
2、特点
易整合SQL和spark
统一的数据访问方式
兼容hive
标准数据连接
3、DataFrame
以RDD为基础的分布式数据集,类似于二维表格
带有schema元信息
支持嵌套类型
每一列都带有名称和类型
查询计划通过Spark catalyst optimiser进行优化,可以获得比RDD更高的性能
利用基于关系代数的等价变换,将高成本的操作替换为低成本操作的过程
4、DataSet
分布式数据库集合
表用row表示
二、Spark SQL编程
1、SparkSession查询起始点
SparkSession是Spark最新的SQL查询起始点
SparkSession内部封装了sparkContext,计算实际上是由sparkContext完成
2、DataFrame
创建:数据源、json、其他RDD
创建临时表、SQL查询并显示
特定领域语言(domain-specific language, DSL)DSL风格语法显示,无需创建临时视图
RDD与DF的转换
3、DataSet
创建
转换
4、DataFrame与DataSet的互操作
5、RDD、DataFrame和DataSet之间的关系
6、IDEA创建SparkSQL程序
7、用户自定义函数
UAF UDAF UDTF
自定义累加器、聚合函数
三、SparkSQL数据的加载与保存
1、通用的加载和保存方式
spark.read.load 是加载数据的通用方法
df.write.save 是保存数据的通用方法
2、JSON文件
3、MySQL
从JDBC读写数据
4、Hive
内嵌hive
外部hive
四、SparkSQL项目实战
1、准备数据
hive中创建表
1张用户行为表,1张城市表,1 张产品表
2、需求:各区域热门商品Top3