Hive架构、倾斜优化、sql及常见问题
发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,Hive架构hive架构如图所示,client跟driver交互,通过parser、planner、optimizer,最后转为mapreduce运行,具体步骤如下driver输入一条sql,会由pa
千家信息网最后更新 2024年09月22日Hive架构、倾斜优化、sql及常见问题
Hive架构
hive架构如图所示,client跟driver交互,通过parser、planner、optimizer,最后转为mapreduce运行,具体步骤如下
- driver输入一条sql,会由parser转为抽象语法树AST,这个是没有任务元数据信息的语法树;
- 语法分析器再把AST转为一个一个的QueryBlock,一个QueryBlock包含输入、输出、计算逻辑,也就是说一个子程序就是QueryBlock
- planner遍历所有的QueryBlock,转为一个个的Operator(算子,比如tablescanOperator),最后形成OperatorTree;
- 优化器对OperatorTree进行优化,包含谓词下推、剪枝等;
- 然后遍历OperatorTree,分割成多个mapreduce作业,形成物理计划
- 之后进行物理优化,比如是否进行map join等
Hive 数据倾斜优化
- 对于group by可以有两个优化点
map聚合:set hive.map.aggr=true,会在map端对相同key先聚合一下;
分发为两道作业:set hive.groupby.skewindata=true,会对原来的一道作业分为两道作业,第一道随机分配key,第二道再按key分配
注意:对于部分聚合函数有用,比如sum和count,但是完全聚合函数无用,比如avg - 对于join也有两个优化点
map join:新版hive中默认开启set hive.auto.convert.join=true ,join的左表如果足够小,会直接把左表内容加载到内存中
两道作业:set hive.optimize.skewjoin = true;set hive.skewjoin.key = skew_key_threshold (default = 100000)这个两道作业跟groupby不一样,这个是说把超过10万行的数据单独启一道map join,最后再把结果聚合
hive常见问题
- hive不支持非等值join
错误:select from a inner join b on a.id<>b.id
替代方法:select from a inner join b on a.id=b.id and a.id is null; - hive不支持非join连接
错误:select from dual a,dual b where a.key = b.key;
正确:select from dual a join dual b on a.key = b.key; - hive不支持or
错误:select from a inner join b on a.id=b.id or a.name=b.name
替代方法:select from a inner join b on a.id=b.id union all select * from a inner join b on a.name=b.name - hive内部表和外部表的区别
创建表时:创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径, 不对数据的位置做任何改变。
删除表时:在删除表的时候,内部表的元数据和数据会被一起删除, 而外部表只删除元数据,不删除数据。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据 - sortby、orderby、distributeby
order by会引发全局排序;会导致所有的数据集中在一台reducer节点上,然后进行排序,这样很可能会超过单个节点的磁盘和内存存储能力导致任务失败。
distribute by + sort by就是该替代方案,被distribute by设定的字段为KEY,数据会被HASH分发到不同的reducer机器上,然后sort by会对同一个reducer机器上的每组数据进行局部排序。
数据
作业
一道
语法
错误
排序
支持
架构
两个
任务
内存
函数
就是
方法
机器
物理
节点
路径
分配
输入
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
巴乔视频软件开发
惠山区加工软件开发内容
美领互联网科技有限公司
php数据库导出命令
h5软件开发要多少
查看t1商贸宝数据库
银行需要互联网软件开发吗
jsp服务器网站
电子商城数据库源码
常州网络技术服务大概费用
意见反馈数据库表字段
广电网络安全生产先进事迹
教学系统的数据库设计与实现论文
安徽数据软件开发服务应用
19年春考网络技术操作题库答案
服务器管理安全
香港回收服务器
网络安全手抄报3
高中网络技术教材pdf
服务器做短视频
在哪里找电脑软件的服务器
数据库管理信息系统考题
聊天软件开发要求
一碑网络技术有限公司
重庆电脑软件开发费用
杭州管理软件开发收费多少
存储服务器映射两台服务器
吉利博越服务器错误是什么
立博数据库
软件开发费用高