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 UDF、UDTF 编程问题。
l UDTF 可返回多行多列记录。
l UDF 返回多行一列的记录
l get_json_all(f.details, "个数,规则名称") 传参到UDF、UDTF时, Java识别的参数类型为 TEXT(包括中文) ,String(英文字符串), 坑坑坑。
- hive开发遇到的一些坑
- 使用Hive-JDBC遇到的一些问题解决
- Chrome 插件开发遇到的一些坑
- spring boot开发遇到的一些坑
- 遇到的Hive的坑
- 开发遇到的一些问题
- hive安装过程中遇到的一些问题以及解决方案
- 安装和使用hive时遇到的一些问题
- Hive:安装Hive遇到的一些问题 (Remote Server Mode模式)
- phonegap 开发中我遇到的一些坑
- 微信支付web开发遇到的一些坑
- 安卓开发中遇到的一些坑
- 给大家分享一下最近开发遇到的一些坑
- 最近C++开发过程中遇到的一些坑
- 我在React Native开发中遇到的一些坑
- Spark Hive使用中遇到的坑
- hive on spark 遇到的坑
- 软件开发中遇到的一些问题
- 京东笔试 输出最短字符串
- Nginx服务器搭建和基本配置详解_nginx
- 深度学习利器:TensorFlow与NLP模型
- Java语言组成基础——需要格外注意的问题(二)
- Mac配置AAPT环境变量
- hive开发遇到的一些坑
- 【拜小白opencv】31-平滑处理4非线性滤波之——中值滤波
- 昨天的一些代码笔记
- ssh链接Ubuntu出现REMOTE HOST IDENTIFICATION HAS CHANGED的问题
- Java 之中文转拼音
- Maximum Product of Word Lengths 问题及解法
- Redis数据库安装(Linux)
- oracle时间获取记录
- Ubuntu 装机必备设置与软件安装