HIVE架构以及HIVE常见问题
程序员文章站
2022-05-01 13:04:17
...
1.hadoop生态系统架构图
hive是运行在YARN上的,数据存储在HDFS上。
2.HIVE实现架构图
将sql语句转换为MapReduce,当然hive本身做了一些优化,有些任务不会走MapReduce。hive其实就是把结构化的数据文件映射到表中,hive表的元数据信息存储在关系型数据库中,具体可以参见我的另一篇博客,配置了mysql数据库。
SQLParser 对sql语句进行解析,Query Optimizer 进行优化,Physical Plan 转化为物理计划(比如说,分成几个MapReduce去执行),最后Executioner执行。client包括(cli即hive shell,JDBC,WEBUI),元数据包括,表名,表所属的数据库,表的拥有者,列/分区字段,表的类型(是否是外部表),表的数据所在的目录等。Hadoop:使用hdfs进行存储,使用MapReduce进行计算。
3.HIVE的优点
1.优势在于处理大数据,对于小的数据没有优势,因为执行延迟比较高。因为执行延迟比较高,所以常用于数据分析实习性要求不高的场合。数据的离线处理。
2.可扩展,基于hadoop,hadoop是易扩展的,(可以扩展集群规模,支持自定义函数)
3.统一的元数据管理,可以与impala/spark等共享原数据
4.操作接口采用类sql语法,避免写MapReduce
4.常见问题
这个部分,我遇见问题,以后会一个个分析,当然,在配置好环境以后,自己学会查看日志文件就好。
1.hive多表连接查询
select count(distinct deptno) from dept_part where month = '201809'
union
select count(distinct deptno) from dept_part where month = '201810';
报错:FAILED: ParseException line 3:0 missing ALL at 'select' near '<EOF>'
另外,在子查询的代码里面记得给别取别名,hive本身存在一定问题
希望有小可爱告诉我一下。