这是我参与「第四届青训营 」笔记创作活动的的第3天
前言:作为一名大数据纯小白,想要入坑大数据,趁着这次字节青训营的机会,学习大数据,希望以后能走大数据开发的道路(java开发太卷了😭😭),有哪里不对的地方还请大家指正!。
大数据体系
话不多说,先上图:
经过向小组中小伙伴请教,了解到新手学习大数据基本路线:
大数据分三块,数据接入部分,数据计算部分,结果存储部分
数据接入,包括 Kafka hdfs. hive
数据计算,spark flink实时 mapreduce tez
结果存储,包括 hbase mysql elasticsearxh
经小伙伴介绍,先学习数据计算spark,flink。
大数据体系和sql
在上课时老师说到一句话:One SQL rules big data all。可见sql在大数据中具有举足轻重的地位! 那么大数据体系中的sql处于什么位置呢?继续上图!
所有学习大数据,先从sql开始💦
sql处理流程
从一个sql语句到运行,需要经过这四个处理流程,在本节中主要学习的时sql Optimizer。
Parser
首先对于一个待处理的sql语句,进行Parser解析,将一个string的sql解析为AST抽象语法树。在该过程中包含以下两步:
词法分析:拆分字符串,得到关键词、数值常量、字符串常量、运算符号等token
语法分析:将token 组成AST node,最终得到一个AST
解析出的AST树如下所示:
其中根结点SelectStmt相当于一个Select查询语句,例如
select uid,uname from usertable where uid>5 group by city order by age
对于根节点的子节点分别将其拆分为select uid,uname 、 from usertable、where uid>5 and age>10、group by city、order by age这五个,然后又对where uid>5 and age>10子节点进行细拆分比如:uid>5 、age>10
其他等待后续学习。。。