hive开发遇到的一些坑

来源:互联网 发布:淘宝卖家子账号 编辑:程序博客网 时间:2024/06/01 10:22

遇到的问题:

1. 数据倾斜,程序运行非常缓慢,长时间停顿。(大表数据量500多万,小表数据量仅180条),两个表关联, 数据严重倾斜。

版本1

select 

 '' as id,

 f1.apply_id,

 f1.number,

 f1.rule_name, 

 a.apply_time,

 

from (

 select  

    f1.apply_id,

    get_json_obj(f1.details,'data[0].规则列表[0].规则详情[0].个数') as number,

    get_json_obj(f1.details,'data[0].规则列表[0].规则名称') as rule_name

 from   f1  

 where  f1.partition_date='2017-06-05'

  and f1.details  RLIKE ".*在多[]?平台申请借款.*" 

) f1   --大表(500多万条记录)

join (

    select distinct

      t.id,

      t.apply_time,

    from t

      lateral view explode(split(hit_rule_list,',')) adtable as hit_rule

    where partition_date = '20170605'

      and to_date(apply_time)='2017-06-05'

) a   --小表 (180条记录)

on f1.apply_id = a.id;

症结:每次运行在同一地方(map操作)发生卡顿, 无法继续运行,数据倾斜。

原因:大表关联小表  ; 5百万条记录未经过滤进行了模式匹配、UDF调用,做了很多无用操作,因为对用不到的记录也进行了操作,开销极大。

改进版本2

select 

 '' as id,

 f1.apply_id,

 f1.number,

 f1.rule_name, 

 a.apply_time,

from (

    select a.id,

     a.apply_time,

     from(

      ………….

     ) a

join  (

 select distinct 

    h.apply_id,

    get_json_obj(h.details,'data[0].规则列表[0].规则详情[0].个数') as number,

    get_json_obj(h.details,'data[0].规则列表[0].规则名称') as rule_name

 from  (select distinct

                id

        from q  where partition_date = '20170605'and to_date(apply_time)='2017-06-05' 

        )d 

       left outer join 

       (select f1.apply_id,f1.details from f1  where  f1.partition_date='2017-06-05' ) h

       on d.id=h.apply_id where h.details  RLIKE ".*在多[]?平台申请借款.*"

) f1

on  a.id=f1.apply_id 

;

 改进版本说明:

   小表关联大表,即 a.id=f1.apply_id 而不是 f1.id=a.apply_id  ;

   对大表f1 进行过滤,只保留需要的记录后,在进行 UDF调用和其它进一步操作。尽量先分区, 在用小表外连接 大表,保留了要进一步操作的记录,

在进行 模式匹配, 最后UDF调用。5分钟内即可完成, 还可进一步优化。

参考文献 http://blog.csdn.net/guohecang/article/details/51567434


3. hive UDFUDTF 编程问题。

l UDTF 可返回多行多列记录。

l UDF 返回多行一列的记录

l get_json_all(f.details, "个数,规则名称") 传参到UDFUDTF时, Java识别的参数类型为 TEXT(包括中文) ,String(英文字符串), 坑坑坑


 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 吃水果嘴唇肿了怎么办 二岁宝宝不爱吃饭怎么办 小婴儿便秘但不爱喝水怎么办 宝宝只吃水果不吃饭怎么办 一岁宝宝不喜欢吃水果怎么办 1岁宝宝不吃水果怎么办 一岁半宝宝吃水果拉肚子怎么办 大人发烧了怎么办如何退烧 怀孕后不爱吃水果怎么办 不敢吃水果了怕虫怎么办 宝宝发烧38度不出汗怎么办 1岁宝宝喜欢含饭怎么办 3岁宝宝喜欢含饭怎么办 孩子咳嗽发烧怎么办最有效 孩子咳嗽打哈切流鼻涕发烧怎么办 孩子香蕉吃多了怎么办 80多岁老人发烧怎么办 小孩香蕉吃多了怎么办 7个月宝宝缺钙怎么办 宝宝脖子被汗淹到红了脱皮怎么办? 小儿出汗多咳嗽怎么办吃什么 牛高烧不退怎么办最好 猪体温低不吃食怎么办 小孩发烧咳嗽怎么办吃什么药 大晚上发烧39度怎么办 胃受凉了老打嗝怎么办 大人发低烧怎么办如何退烧 吃了退热药不退热怎么办 猪持续高烧不退怎么办 猪感冒了不吃食怎么办 6岁儿童发烧38度怎么办 5岁儿童发烧38度怎么办 7岁儿童发烧38度怎么办 儿童发烧到38度怎么办 4岁儿童发烧38度怎么办 9岁儿童发烧38度怎么办 5儿童发烧38度怎么办 咳嗽了20多天怎么办 嘴角烂了怎么办涂什么药 感冒发烧到39度怎么办 6岁宝宝发烧头痛怎么办