
Hive
文章平均质量分 72
Hive 常见使用与调优
BIT_666
天道酬勤,厚积薄发
展开
-
Hive - 检查分区 partition 是否存在
Hive 表分区 partition 生成检测。原创 2023-10-10 08:00:00 · 974 阅读 · 0 评论 -
Hive - Count && Sum 使用与性能对比
使用 hive 计数时常使用 Count 和 Sum 两个函数进行统计,下面看看二者的使用方法。原创 2022-05-27 13:05:55 · 1718 阅读 · 0 评论 -
Hive - distinct && group by 求 UV,PV 实战
给定数据表中包含用户 uid 和用户是否点击广告的标签 label,经常有需求统计用户的下发,打开 UV,PV,下面通过 Hive 实现统计并分析 distinct 与 group by 的性能与使用场景。原创 2022-05-16 16:03:36 · 989 阅读 · 2 评论 -
Hive - Cube, Rollup, GroupingId 示例与详解
上篇文章讲到了Grouping Sets 的使用方法,Grouping Sets 可以看做是将 group by 的内容进行 union 整合,这篇文章将基于同一思想进行扩展介绍两个方法 Cube 以及 Rollup,同时给出辅助函数 GroupingId 的生成方法与使用方法。...原创 2022-05-06 10:35:43 · 3188 阅读 · 0 评论 -
Hive - grouping sets 示例与详解
介绍 group by 以及 grouping sets 相关用法。原创 2022-05-05 16:57:46 · 3812 阅读 · 0 评论 -
Hive - 警惕默认分割符号:^A
hive 执行如下 insert 插入语句后将数据从 RCFile 格式转换为 Text 并导入 Hdfs,但是解析忽略了 ^A 默认符,导致后续任务判断失效。原创 2022-01-13 19:18:04 · 2199 阅读 · 0 评论 -
Hive - Load Data 数据过长或过短
Hive 可以通过load data inpath 加载本地或者 hdfs 的数据到 hive 表中,有时会出现生成数据长于 hive 表字段或者短于 hive 表字段的情况,经过测试,两种情况下 Load Data 到 hive 表中均没有问题。原创 2021-12-03 17:23:55 · 1592 阅读 · 0 评论 -
Hive - ROW_NUMBER() OVER 排序&去重
一.引言需求:每日更新的全量数据表,根据用户去重获取7日内的最新的用户行为二.ROW_NUMBER() OVER 实现全量数据表 user_action ,根据 dt 分区,共包含三列(user STRING,action STRING,dt STRING)假设有过去一年共 365 个 dt 分区,取过去7天用户最新的行为并去重:SELECT tmp.user, tmp.action FROM(SELECT user, action, ROW_NUMBER()原创 2021-09-13 16:47:33 · 4353 阅读 · 0 评论 -
Hive - 增删改 Hive 表字段
一.引言使用 Hive 表时由于数据的变换经常需要调整 Hive 表字段结构,这里记录一下常用方法。先创建一个测试表 tmp_change_column,包含两个字段 a,b 和分区标识 dt :function createTable() {hive -e "create table if not exists tmp_change_column (a string,b string)PARTITIONED BY(dt string)row format delimited fie原创 2021-09-04 15:37:23 · 14856 阅读 · 2 评论 -
Hive 获取数组最后一个元素
引言:通过split分割当前字段获取数组,并得到最后一个索引的元素,通过hive怎么实现,下面通过不同方法一一验证可行性。字段样式shopList : productA,productB,productC表名 shopTable : shopListTable一.通过 split + size 获取 - 失败 hive -e " select split(shopList,',')[size(split(shopList,','))-1] from shopTable.....原创 2021-01-23 21:29:32 · 11173 阅读 · 5 评论 -
Hive count,sum 使用与扩展
一.引言有一批市场的用户购买数据,希望进行相关分析:Table:user_action_in_market字段:user 、gender、shop_list、buy、cost、dt字段分别代表购买用户,用户性别(f,m),用户购买商品列表(逗号分割 A,B,C...),是否购买(true, false),花费(¥)与日期(dt),若没有购买则购买商品列表为空二.count,sum基础用法1.相同点count,sum都是统计汇总函数,相同点都是用来求和2.不同点=&..原创 2021-01-05 16:02:28 · 2601 阅读 · 0 评论 -
Hive 踩坑之 GC overhead limit exceeded
一.引言使用Hive执行 select count(*) from table 这种基础语法竟然爆出 GC overhead limit exceeded,于是开始了新的踩坑之旅二.hive语句与报错hive -e "select count(*) from $tablewhere daybetween '20201101' and '20201130';"统计一下用户数量结果报错,一脸懵逼三.解决方案尝试1.增加内存既然是内存不足,那就增加堆内存尝试一下,....原创 2020-12-12 16:28:28 · 9341 阅读 · 0 评论 -
Hive Full Join多个表与Union All多个表
一.引言假设有如下三张表,里面分别记录了三类不用用户的购买记录,现在想将下属记录合并为 => | 用户 | 果蔬购买量 | 饮品购买量 | 零食购买量 | ,没有购买则为 Null:Table A:用户在超市近一个月购买果蔬的记录Table B:用户在超市近一个月购买饮品的记录Table C:用户在超市近一个月购买零食的记录先建一个表供我们插入数据hive -e "create table if not exists user_act_of_buying ( use原创 2020-12-01 15:51:51 · 13125 阅读 · 1 评论 -
Hive collect_set与collect_list
1.引言:collect系列函数顾名思义就是收集,体现在hive中就是把一个key的多个信息收集起来合成一个lsit或者set,唯一的区别是后者可以去重,前者保持原始数据不变,大家也叫这个方法叫列传行,大概意思相同。下面用testTable中的数据进行测试,表中共两列,A为用户名,B为用户购买商品的编号。TestTable name product A 1 A 2 A 2 B 1 B 3 2.co......原创 2020-11-18 10:51:18 · 1616 阅读 · 2 评论 -
Hive 常用参数整理
一.引言上周遇到了大表join大表的情况,调试了一天终于调通,期间发现对hive设置参数十分不熟悉才会导致调优花了一天时间,特此整理常用参数供以后参考。二.场景1.Hive 动态分区set hive.exec.dynamic.partition.mode=nonstrict;动态分区的好处是可以根据表字段自动将数据加入到指定分区,相比于写死固定分区更加便捷。以下实例基于your_table是单分区表。原始分区示例:hive -e "insert overwrite tab.原创 2020-11-17 20:32:30 · 4789 阅读 · 0 评论 -
Hive Transform By Python
Hive 处理数据时遇到复杂情况,可以考虑改写 sparkSql 或者 直接调用 transform 写 python,这里整理一下用 python 写 transform 写法:1.实现 -- 思路transform 是 hive 自带函数,搭配 python 处理复杂业务逻辑非常实用,需要准备两个文件即可,xxxx.sh,yyyy.py。xxxx.sh 负责从 hive 表中提取要处理的字段,yyyy.py 负责处理上一步提取的字段并重新输出自己要的内容,然后可以选择将内容插入到另.原创 2020-09-29 14:55:20 · 1253 阅读 · 0 评论 -
Hive 分区表 Select 优化
Hive 分区表 Select 优化对hive分区表执行select操作时,经常执行很慢,原因竟是因为一个点!优化适配情况:分区表执行select操作where选择某一分区或多个分区查询操作:where条件内分区选择时 在分区字段上加单引号' '原始写法:hive -e "select * from table where dt=20200709"修改后写法:hive -e "select * from table where dt='20200709'"..原创 2020-07-09 15:45:45 · 1470 阅读 · 0 评论 -
Hive 分区表创建,增加,删除
Hive分区表1.从HDFS加载数据A.建表时加载hive -e "create table if not exists tableNamestr1 string,str2 string,str3 string)partitioned by (dt string)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'STORE...原创 2020-02-10 14:14:13 · 607 阅读 · 0 评论