概述
- 类似Hive、Pig
- 基于Spark(内存)
- 集成在Spark中,不需单独安装
- 提供统一的数据访问方式
- 结构化的数据类型:JDBC、JSON、Hive、Parquet(Saprk SQL 默认数据源)
- 兼容Hive
- 支持标准的数据连接:JDBC、ODBC
- 核心概念:表(DataFrame)= 结构(Schema) + 数据(RDD)
创建DataFrame
- 使用 case class 样本类
- 定义表的 schema
- 导入HDFS的dept.csv作为数据
- 使用 Spark Session
- 包括 Spark Context、SQL Context、Streaming Context
- 2.0后引入的统一访问接口,可访问所有spark组件
- 使用StructType创建schema
- 读取带格式文件
- Json
操作DataFrame
- DSL语句
- SQL语句
操作DataSet
- DataFrame缺乏编译时类型安全
Spark SQL 视图
- 虚表,不存储数据
- 普通视图:本地视图,只在当前session中有效
- 全局视图:在不同session中都有效,把全局视图创建命名空间,global_temp
数据源
- load() 和 save()
- Parquet文件
- 列式存储文件,Spark SQL默认数据源
- 把其它文件转为Parquet文件
- 支持Schema的合并:项目开始的时候,表(schema)很简单,逐步向表中增加新的列
- Json文件
- val testResult = spark.read.json("/usr/local/tmp_files/emp.json")
- JDBC
- Hive
性能优化
- 缓存方式
- 在内存中缓存数据
- 性能优化参数
IDE中开发
- 关闭log4j
参考
官网