目录
1. 需求分析
在最近的工作需求中,想针对大数据平台的 SQL执行 功能加入 SQL检测 能力,进而可以在用户将 SQL 提交给 Hive引擎 或者 Spark引擎 执行之前,可以捕获到精确的报错信息,整体流程图如下所示:
2. 流程分析
主要执行流程如下所示:
- 用户提交 SQL 后,平台先调用【SQL扫描服务】的 check 接口,从服务中定义的一系列规则中进行检测,如果检测到异常,则返回【不通过】+【明确的报错提醒】
- 如果在【SQL扫描服务】中没有检测到异常,则执行原有逻辑。如果执行不成功,则将具体的 SQL 以及报错的堆栈信息返回给【SQL扫描服务】,【SQL扫描服务】返回通用的报错提醒
- 【SQL扫描服务】根据第 2 步上报的 SQL 以及分析报错信息,进行人为分析,在【SQL扫描服务】中加入最新的检测规则
3. 功能分析
进而定义出【SQL扫描服务】应该具有的能力边界,如下图所示:
【SQL扫描服务】应该包含的主要功能点分析:
- SQL Check接口:根据定义的规则集合以及规则集合中的顺序,依次进行检测,返回成功/失败等信息
- 错误上报接口:大数据平台上报没有检测到的 SQL 以及错误详情
- 模型规则的新增、启停控制
- 模型规则的优先级控制
- 错误日志记录功能
4. 结论
经过以上分析,目前最需要解决的一个问题是应该以什么方式对 SQL 进行解析。因为数据都是存在 Hive 表中,使用 Hive SQL 进行查询,故而需要分析下 Hive 本身的 SQL 解析流程。