Hive架构、倾斜优化、sql及常见问题

Hive架构

Hive架构、倾斜优化、sql及常见问题
hive架构如图所示,client跟driver交互,通过parser、planner、optimizer,最后转为mapreduce运行,具体步骤如下
Hive架构、倾斜优化、sql及常见问题

创新互联公司专注于越秀企业网站建设,成都响应式网站建设,购物星空体育app最新版本(2024已更新)建设。越秀网站建设公司,为越秀等地区提供建站服务。全流程按需制作网站,专业设计,全程项目跟踪,创新互联公司专业和态度为您提供的服务

  1. driver输入一条sql,会由parser转为抽象语法树AST,这个是没有任务元数据信息的语法树;
  2. 语法分析器再把AST转为一个一个的QueryBlock,一个QueryBlock包含输入、输出、计算逻辑,也就是说一个子程序就是QueryBlock
  3. planner遍历所有的QueryBlock,转为一个个的Operator(算子,比如tablescanOperator),最后形成OperatorTree;
  4. 优化器对OperatorTree进行优化,包含谓词下推、剪枝等;
  5. 然后遍历OperatorTree,分割成多个mapreduce作业,形成物理计划
  6. 之后进行物理优化,比如是否进行map join等

Hive 数据倾斜优化

  1. 对于group by可以有两个优化点
    map聚合:set hive.map.aggr=true,会在map端对相同key先聚合一下;
    分发为两道作业:set hive.groupby.skewindata=true,会对原来的一道作业分为两道作业,第一道随机分配key,第二道再按key分配
    注意:对于部分聚合函数有用,比如sum和count,但是完全聚合函数无用,比如avg
  2. 对于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常见问题

  1. 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;
  2. 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;
  3. 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
  4. hive内部表和外部表的区别
    创建表时:创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径, 不对数据的位置做任何改变。
    删除表时:在删除表的时候,内部表的元数据和数据会被一起删除, 而外部表只删除元数据,不删除数据。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据
  5. sortby、orderby、distributeby
    order by会引发全局排序;会导致所有的数据集中在一台reducer节点上,然后进行排序,这样很可能会超过单个节点的磁盘和内存存储能力导致任务失败。
    distribute by + sort by就是该替代方案,被distribute by设定的字段为KEY,数据会被HASH分发到不同的reducer机器上,然后sort by会对同一个reducer机器上的每组数据进行局部排序。

分享文章:Hive架构、倾斜优化、sql及常见问题
本文网址:/article12/pppegc.html

成都网站建设公司_创新互联,为您提供网站策划云服务器网站设计营销型网站建设网站营销品牌网站设计

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都网站建设