前言
Spark Thrift Server是相当值得参考的技术。核心的内容包括有:
- catalyst 高性能的优化器
- sql core 分布式查询实现
- hive 实现元数据管理,兼容hive
- thrift server 对hive jdbc的支持
这一套组合下来,就是一个完整的分布式OLAP查询实现。结合之前介绍的Hadoop存储体系,即可搭建完整的OLAP系统。
OLAP系统的研究,有几个值得挖掘的问题:
- 能否进一步提高计算的效率,对更大规模的数据集进行实时查询
- 能否对某些特定的查询进行优化,满足特定场景应用的需求
- 能否从简单的数据信息获取,到更进一步的数据特征处理
- 能否融合智能算法,实现数据更强大的处理能力
目录
- catalyst
- sql-core
- thrift server
- hive
catalyst
用于解析转换SQL语句,并生成逻辑计划。
语法解析、计划生成可以算是基础功能。一些研究的方向是如何加速解析转换的速度,但总的来说,该环节对查询执行影响不大。KtSQL使用Calcite作为SQL的解析器。
sql-core
查询计划执行器。把catalyst生成的逻辑计划,转换成Spark RDD操作。sql-core模块也提供了SQLContext,作为公共接口,SQLContext允许调用SQL语句并执行。
thrift server
thrift server实现了HiveServer和客户端SQL CLI,通过JDBC/ODBC,可以连接到thrift server。假如我们通过UDFs, UDAFs, UDTFs扩展了hive,可以借助thrift server把请求提交到spark进行计算。
Hive扩展,个人认为是拓展OLAP的关键切入点。数据应用也应该采用二次扩展的方式来实现,实现自然且使用简便。
hive
实现了Hive的支持,对SQLContext进行了扩展,提供HiveContext作为接口。HiveContext允许用户使用HiveQL子集访问底层的数据。HiveContext访问数据时,使用的是Hive Metastore和Hive SerDes。HiveContext还允许进行二次拓展,通过Hive UDFs, UDAFs, and UDTFs的形式。
SparkSQL可以使用hive udf,也可以使用自身机制支持的udf。如果是使用hive udf,需要通过hive metadata来注册管理。spark udf则按文档操作吧。