学习致谢:
https://www.bilibili.com/video/BV1Xz4y1m7cv?p=52
数据分析方式
命令式
缺点:有一定的学习成本/入门门槛
优点:灵活!可以使用底层api实现很复杂的业务
SQL
优点:入门门槛低,只要会英文单词/简单的语法规则就可以写
缺点:只能做一些简单的业务,负责业务实现起来就比较苦难
SparkSQL的前世今生
SparkSQL诞生
从Spark框架1.0开始发布SparkSQL模块开发,直到1.3版本发布SparkSQL Release版本可以在生产环境使用,再到Spark 2.0版本SparkSQL才算真正稳定,在实际开发中发挥者其巨大的作用,SparkSQL的发展经历如下几个阶段:
. Spark1.0之前:没有SparkSQL,有一个开源项目shark底层使用Spark作为Hive的执行引擎
·Spark1.0时: Spark自己开发了新的组件:SparksQL,使用SchemaRDD对RDD进行封装,用来表示带有约束的RDD
·Spark1.3时: SparkSQL开发了新的数据抽象:DataFrame:底层实现了RDD的大部分功能,并增加了SQL操作,不再强依赖RDD,但不支持泛型
·Spark1.6时: SparkSQL开发了新的数据抽象:DataSet:支持泛型
·Spark2.0时:统一了DataFrame和DataSet: DataSet[Row] =DataFrame,且增加了新的组件:StructuredStreaming支持SQL处理流数据
注意:
1.SparkSQL发展历史较为曲折,走了很多弯路,但也都是必须的,因为要兼容其他语言
2尽管SparkSQL的API很多(且支持很多编程语言),但是使用起来都很友好,底层也都做了很多的性能优化!
官网介绍
说明:
1.结构化数据-支持
有固定的结构和约束Schema(字段名称/类型)
2.半结构化数据-支持较为严格的半结构化数据
有不是固定的结构和约束(如下json为例)
[
{
"name":"jack",
"tel":"13888888888",
},
{
"name":"jack",
"tel":13888888888,
"age":18
},
{
"name":"jack",
"tel":"13888888888",
"age":"18"
}
]
3.非结构化数据-需要处理之后变为结构化/半结构化才支持
如视频/图片/音频…
总结:SparkSQL就是使用sql的方式对以上数据进行处理的技术