HIVE源码学习-执行计划Operators和优化Optimizers

逻辑执行 首先看下之前的总体处理流程 Hive SQL - (Parser) -> AST - (Semantic Analyze) -> QB - (Logical Plan) -> Operator Tree - (Physical Plan) -> Task Tree - (Physical Optim) -> Task Tree主要有三大块,......

HIVE源码学习--实现一个自定义的HIVE序列化与反序列化器

前言 hive本身并不存储数据,它用的是hdfs上存储的文件,在与hdfs的文件交互读取和写入的时候需要用到序列化, hive有一个serde模块,其中就有很多的序列化器和反序列化器, 序列化(serialize)是将导入的数据转成hadoop的Writable格式 反序列化(deserialize)是select时将hadoop上的数据导入到内存object 当然也有一部分不放在ser......

基于antlr4实现HQL的解析[格式化]

前言 对于一般的网页上sql查询工具都会有一个功能【格式化】,对于hql的格式化市面上没有很好的直接使用的工具。 这边基于antlr4对hql的解析手动实现一个格式化的功能。 代码实现参考:https://github.com/webgjc/sql-parser/ 设计思路 对于一般比较固定的语句如create,show,drop,alter等采用直接对拿到节点并带格式用字符串拼接。 对于最......

博客新增两个功能模块

入口 在主页侧边栏的FRIENDS模块中, 新增了我的钢琴屋 和 我的阅读室 下面分别来阐述 我的钢琴屋 这个是挂在github上的一个静态页面,github地址为 https://github.com/webgjc/tan8【如侵权可下线】 主要功能为练习和收听钢琴曲 实现 其中包括一个flash播放器和一个数据列表 flash播放器主要参考某琴吧的实现,并引用了他们的文件存储直接获取......

HIVE源码学习--从CliDriver跟踪整个执行流程

前言 对接和使用hive的上层组件也很多了,hiveserver2,beeline,metastore,hivehook等,但没好好调试过hive,计划进行一次比较狠的补课,让自己对hive内部的很多实现有一个基础的认识,同时自定义实现一些模块。 本次是hive源码层的调试与实验的开坑,初步想象的过程有:hive执行大致全流程调试,序列化反序列化,执行计划,metastore,hivehoo......

本地hadoop与hive的单节点部署和开发调试[mac]

预备 这边部署的 hadoop版本为 2.7.3 hive版本为 1.2.1 注:src为源码包 Hadoop搭建 解压,进入配置目录 tar zxvf hadoop-2.7.3.tar.gz cd hadoop-2.7.3/etc/hadoop 修改配置 core-site.xml,hdfs-site.xml, mapred-site.xml ......

hiveSQL执行日志的收集

前言 一般的hive客户端都没有详细的执行日志,要了解执行情况得去yarn看,就比较麻烦,本次考虑的是在hive客户端获取到全部的执行日志,来源主要参考hadoop-yarn-client的内部实现。 使用引擎为tez,在异步执行hql时,获取到的日志中包括applicationId,考虑通过这个去获取到全部的执行日志,包括进度和map/reduce信息。 实现 jdbc部分日志 获取jdb......

hiveserver2与hiveSQL的执行

前言 对于hql的执行,可以在集群中启动hive的命令行,也可以使用beeline或其他客户端用jdbc连接Hiveserver2发送sql,中间传输用的是thrift协议。 这边演示python的实现和java的实现 实现 python python使用pyhive或者impyla库都可以。使用方式也都类似,这边以pyhive举例。 from pyhive......

基于antlr4实现HQL的解析[元数据]

前言 在大数据场景中,HQL的使用次数很多:离线任务,及时查询,数仓建模等。 关于HQL解析在hive底层也有他自己的HQL解析实现。不过底层的实现直接用不起来,这边使用antlr4直接来实现HQL的解析。 HQL解析在很多场景能用到并发挥如虎添翼的作用,这边开个新坑,会分好几个文章来讲主要用到的一些场景和实现。 本文主要讲CREATE语句解析出元数据。会用到的场景也很多,比如建模的时候,离......

hive与mysql元数据的快速采集

Hive元数据采集 首先以hive举例, hive可以在命令行执行下面命令得到大部分表和字段的元数据, 但因为这样每个都要执行就很慢。 DESCRIBE FORMATTED {tablename} 然后直接尝试从metastore库采集,这里不做metastore具体结构的论述, 想了解详细结构可以移步Hive MetaStore的结构。 因为是按库采集,首先想到的方法是先到通过库获取库......