数据中台解析Hive SQL过程
一、数据中台解析SQL的目的:
数据中台需要对外提供数据特征查询的能力,因此中台查找并解析各个平台的sql,找出哪些表中的字段经常被使用,以便沉淀为特征,而我们要做的是找出sql中的数据表及其字段。以海象平台调度任务中的Hive SQL为例,看一下处理一个hive SQL都需要做什么。
二、预处理:
一个sql中会包含很多与查询操作不相关的语句:
1. 注释,包括--和#两种注释;
2. add jar;
3. alter table;
4. create temporary function,定义临时函数;
5 海象中的系统参数;
在预处理阶段,我们通过正则表达式把这些字段全部过滤掉。
三、CTE语法:
hive sql中会经常出现形如with as的CTE表达式,在解析SQL时可能对我们有影响,因此需要把CTE中临时创建的表给屏蔽掉。
抽象语法树:
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>2.2.0</version>
</dependency>
hive中有解析sql模块的,我们直接引入jar包调用就好。
四、访问者模式:
对于解析SQL来说,访问者模式最大的特点是遍历语法树和解析语法树节点操作分析,符合面向对象中的开闭原则。
如何处理SQL中的子查询?
将QueryNode分割,使得每一个QueryNode下都没有其他的QueryNode。
如何找到字段和表名间的联系?
依靠表别名。
数据中台解析Hive SQL过程的更多相关文章
- 数据迁移过程中hive sql调优
		本文记录的是,在数据处理过程中,遇到了一个sql执行很慢,对一些大型的hive表还会出现OOM,一步一步通过参数的设置和sql优化,将其调优的过程. 先上sql ) t where t.num =1) ... 
- 【原创】大数据基础之Hive(2)Hive SQL执行过程之SQL解析过程
		Hive SQL解析过程 SQL->AST(Abstract Syntax Tree)->Task(MapRedTask,FetchTask)->QueryPlan(Task集合)- ... 
- OPPO数据中台之基石:基于Flink SQL构建实数据仓库
		小结: 1. OPPO数据中台之基石:基于Flink SQL构建实数据仓库 https://mp.weixin.qq.com/s/JsoMgIW6bKEFDGvq_KI6hg 作者 | 张俊编辑 | ... 
- 大数据技术之_19_Spark学习_03_Spark SQL 应用解析 + Spark SQL 概述、解析 、数据源、实战  + 执行 Spark SQL 查询 + JDBC/ODBC 服务器
		第1章 Spark SQL 概述1.1 什么是 Spark SQL1.2 RDD vs DataFrames vs DataSet1.2.1 RDD1.2.2 DataFrame1.2.3 DataS ... 
- Hive SQL 编译过程
		转自:http://www.open-open.com/lib/view/open1400644430159.html Hive跟Impala貌似都是公司或者研究所常用的系统,前者更稳定点,实现方式是 ... 
- 【转】Hive SQL的编译过程
		Hive是基于Hadoop的一个数据仓库系统,在各大公司都有广泛的应用.美团数据仓库也是基于Hive搭建,每天执行近万次的Hive ETL计算流程,负责每天数百GB的数据存储和分析.Hive的稳定性和 ... 
- Hive SQL的编译过程
		文章转自:http://tech.meituan.com/hive-sql-to-mapreduce.html Hive是基于Hadoop的一个数据仓库系统,在各大公司都有广泛的应用.美团数据仓库也是 ... 
- 转:Hive SQL的编译过程
		Hive是基于Hadoop的一个数据仓库系统,在各大公司都有广泛的应用.美团数据仓库也是基于Hive搭建,每天执行近万次的Hive ETL计算流程,负责每天数百GB的数据存储和分析.Hive的稳定性和 ... 
- Hive SQL的编译过程[转载自https://tech.meituan.com/hive-sql-to-mapreduce.html]
		https://tech.meituan.com/hive-sql-to-mapreduce.html Hive是基于Hadoop的一个数据仓库系统,在各大公司都有广泛的应用.美团数据仓库也是基于Hi ... 
随机推荐
- android权限详细
			访问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限 获取错略位置 android.permiss ... 
- UI组件之AdapterView及其子类关系,Adapter接口及事实上现类关系
			AdapterView本身是一个抽象基类,它派生的的子类在使用方法上十分类似.AdapterView直接派生的三个子类:AbsListView.AbsSpinner,AdapterViewAnimat ... 
- FATFS在SD卡里,写入多行数据出的问题
			串口接收的数据存入数组,然后把数组截取有效部分,存入SD卡里的一行没有问题 但是从SD卡读出这一行之后,重新写入SD卡就有了问题,经过调试发现,错误在于 \n 一直是这一串数据,为什么会出错呢??? ... 
- BZOJ 1695 [Usaco2007 Demo]Walk the Talk 链表+数学
			题意:链接 方法:乱搞 解析: 出这道题的人存心报复社会. 首先这个单词表-先上网上找这个单词表- 反正总共2265个单词.然后就考虑怎么做即可了. 刚開始我没看表,找不到怎么做,最快的方法我也仅仅是 ... 
- Lucene学习总结之二:Lucene的总体架构                                        2014-06-25 14:12    622人阅读    评论(0)    收藏
			Lucene总的来说是: 一个高效的,可扩展的,全文检索库. 全部用Java实现,无须配置. 仅支持纯文本文件的索引(Indexing)和搜索(Search). 不负责由其他格式的文件抽取纯文本文件, ... 
- php实现找链表中环的入口节点(画图、看评论)
			php实现找链表中环的入口节点(画图.看评论) 一.总结 画图.看评论 二.php实现找链表中环的入口节点 题目描述: 一个链表中包含环,请找出该链表的环的入口结点. 三.代码 第一步,找环中相汇点. ... 
- TF-IDF模型
			TF-IDF模型 1. 理论基础 由于数据挖掘所有数据都要以数字形式存在,而文本是以字符串形式存在.所以进行文本挖掘时需要先对字符串进行数字化,从而能够进行计算.TF-IDF就是这样一种技术,能够将字 ... 
- php生成唯一字符串
			$units = array(); //循环生成好多个唯一字符串 for($i=0;$i<1000000;$i++){ $units[]=md5(uniqid(md5(microtime(tru ... 
- nginx源代码分析--ngx_http_optimize_servers()函数
			这个函数做了连部分工作:1)以port为入口点 将实用的信息存放到hash表内 2)调用ngx_http_init_listening()函数 对port进行监听 1. 在ngx_http_core_ ... 
- CentOS-7-x86_64-DVD-1511.iso
			http://vault.centos.org/7.2.1511/isos/x86_64/CentOS-7-x86_64-DVD-1511.iso 
