Hive
geekingLi
now or never
展开
-
【Hive】判断字符串中是否包含最近一个月的日期
最近遇到一个场景,就是要判断某个字段中的字符串的值是否包含近30天的日期date_log2020-09-202020-06-10|2020-06-11|2020-06-13|2020-06-152020-08-20|2020-08-18|2020-08-19|2020-08-23当时想过几种方案:1.用explode列转行爆炸出来一个个去判断处理,但是数据量太大,效率低,舍弃了;3.2.用正则匹配。select if(date_log like '%2020-$...原创 2020-11-02 23:48:15 · 1280 阅读 · 0 评论 -
【Hive】数据倾斜优化 shuffle, join, group by
总结一下数据倾斜的优化。首先从导致数据倾斜的原因方面分析入手,主要是groupby和join的相关操作,这两个操作都会把相同的key拉到同一个reduce,如果其中某些key分布不均数量过大,这就会导致数据倾斜了。groupby导致的数据倾斜优化:select --最后汇总 pkg ,sum(part_cnt) as installed_cntfrom ( --先局部关联 select substr(pkg_new, 1, lengt..原创 2020-09-24 23:50:03 · 3379 阅读 · 2 评论 -
【Hive】报错Container is running beyond physical memory limits.4.0 GB of 4 GB physical memory used
set mapreduce.map.memory.mb=8192;set mapreduce.map.java.opts=-Xmx8192m;set mapreduce.reduce.memory.mb=4000;set mapreduce.reduce.java.opts=-Xmx4000m;Container [pid=105939,containerID=container_e03_1599034722009_11568264_01_000200] is running beyond..原创 2020-09-24 22:21:50 · 1500 阅读 · 0 评论 -
大数据知识宝典(Hive篇)
注:本文主要摘录于尚硅谷大数据的学习资料,仅作学习记录。Hive部分1.Hive 其他命令操作 1)退出 hive 窗口: hive(default)>exit; hive(default)>quit; 在新版的 oracle 中没区别了,在以前的版本是有的: exit:先隐性提交数据,再退出; quit:不提交数据,退出; 2)在 hive cli 命令窗口中如何查看 hdfs 文件系统 hive(default)>dfs -ls /;.原创 2020-09-20 12:32:12 · 244 阅读 · 0 评论 -
【Hive】grouping sets 中的Grouping__ID过滤不起作用
SELECT key, value, GROUPING__ID, count(*)FROM T1GROUP BY key, valueGROUPING SETS ((), (key))HAVING GROUPING__ID = 1这个sql语句中Grouping__ID过滤不起作用,没有结果返回。下面是官方的解答:问题描述:Filter on Grouping__ID does not work properly类型:Bug受影响的版本:1.3.0,2.0.0修复的版本:1.3...原创 2020-09-06 17:21:30 · 614 阅读 · 0 评论 -
【Hive报错】Grouping sets aggregations (with rollups or cubes) are not allowed if aggregation function..
Grouping sets aggregations (with rollups or cubes) are not allowed if aggregation function parameters overlap with the aggregation functions columns如果聚合函数参数与聚合函数列重叠,则不允许分组集聚合(使用汇总或多维数据集)Grouping sets 里面的字段和sum case when 的字段重复了。params重复。把这个外面再包一..原创 2020-08-08 11:00:08 · 7958 阅读 · 0 评论 -
【Hive】判断字符串中是否包含某个特定字符
一、用like '%2%'select '32002,32002,11001,11001,' like '%2%';二、用regexp正则函数select '32002,32002,11001,11001,' regexp('.*2.*');>>>true原创 2020-08-08 09:48:46 · 29162 阅读 · 0 评论 -
Hive案例之开关状态类解决方法
背景工作中遇到一个需求,统计某个开关的开启和关闭的占比,需求内容比较简单,但是埋点信息比较乱。有点击这个开关的埋点,点击一次记录一次(e_id=aaa|02;click=1),和某一时刻这个开关状态的埋点,每天随机上报多次(e_id=aaa|01;status=1开,status=2关)。但是无法确定上报的状态埋点就是最终的状态,所以需要结合这两个埋点的数据来确认。数据格式如下:id info time原创 2020-07-19 13:55:13 · 201 阅读 · 0 评论 -
【Hive】数据倾斜之join和group by导致的解决案例
Hive调优原创 2020-07-14 00:43:43 · 1059 阅读 · 1 评论 -
【Hive】正则表达式匹配/过滤中文汉字
not rlike '[\\\u4e00-\\\u9fa5]'原创 2020-07-07 21:15:32 · 5909 阅读 · 0 评论 -
【Hive】用sort_array和collet_list对一组数字进行排序,取最大值或最小值
"value" :" {-15, -56, -75, -32, -61}" 取最大值或最小值select sort_array(collect_list(cast value as double))lateral view explode原创 2020-06-22 23:32:42 · 6738 阅读 · 1 评论 -
【Hive】max函数和concat函数的结合使用,实现排序效果
需求:根据日期排序,取6月1号至6月10号这10天中不同id上报的最新的一条数据。方法一:用开窗函数row_number。select id ,infofrom ( select id ,info ,row_number() over(partition by id order by date desc) as rank from table1 w..原创 2020-06-11 13:13:02 · 1445 阅读 · 0 评论 -
【Hive】数据处理--字符串函数split,substr和posexplode函数结合使用
-- {"motiondata":"1-0-1-0-1-0-1-0-1-0-1-0-1-0"}开关类型 开关状态 触发次数智能体感 1 开 2隔空解锁 0 关 0息屏查看 1 开 3免提接听 1 开 2智能切换 0 关 0智能接听 1 开 0智能呼叫 1 开 1...原创 2020-06-07 11:38:37 · 939 阅读 · 0 评论 -
【Hive】explode之后过滤整条数据
背景:IMEI value 111 99 111 60 111 55 222 90 222 102 222 99 这个是explode之后的结果,假设现在有一个条件 value要大于90的数据才满足,那小于90的数据要怎么过滤?比如111,只有一个数据是99,其他都小于90,不满足了。怎么样过滤整个111的数据,而不只是第一行数据?可以对imei打标签?先对每行value打标签:if(value<90,1,0) t.原创 2020-05-30 16:03:15 · 560 阅读 · 0 评论 -
【Hive】在终端执行hivesql相关的shell命令匹配中文字符串注意事项
在终端执行如下命令:hive -e "select a,b,c from tb1 where a not rlike '^[\\u4e00-\\u9fa5]$'"目的是要过滤掉a字段中的中文的,但是这样没有效果。需要加上转义符 \ 才可以。hive -e "select a,b,c from tb1 where a not rlike '^[\\\u4e00-\\\u9fa5]$'"但是在hivesql中,可以直接使用'^[\\u4e00-\\u9fa5]$' 进行中文匹配。...原创 2020-05-11 20:55:12 · 584 阅读 · 0 评论 -
【Hive】输入一行输出多行,posexplode方法及UDTF方法介绍
1. 用sql的方法:map_keys,map_values,lateral view posexplode结合select name ,course ,scorefrom ( select name ,map_keys(params) as array_courses ,map_values(params) as array_scores from ...原创 2020-05-31 14:20:44 · 1025 阅读 · 0 评论 -
【Hive】case when 使用注意事项
记录下hivesql 的 case when 的注意事项:1. sum ( case when ... then ... else ... end ),不要漏了else里面的情况,这个可能会导致计算错误。--近一个月,不同事件人均发生次数select t2.type, sum(tot) as total, sum(user_num) as total_user_nu...原创 2020-05-10 14:38:02 · 4909 阅读 · 0 评论 -
Hive删除含有特殊字符/转义字符的分区
之前写的py脚本里面需要传日期参数:python ./xxxx.py {dt}# 正确应该为 python ./xxxx.py ${dt}但是当时忘记引用变量了,结果在分区中有一个含有特殊字符的分区:show partitions <table name>>> dt=%7Bdt}用传统的删除分区的语句无效,把单引号换成双引号也没有效果。经试了一番发...原创 2020-04-13 23:08:35 · 2116 阅读 · 0 评论 -
【hive异常处理】mapreduce执行过程中出现回退
reduce过程:0~33%阶段是shuffle过程,数据从 mapper --> reducer。 33~67%阶段是sort的过程,在mapper完成后才会执行。 67%~100%阶段是真正的reducer程序的执行过程。如果MR在 >67%阶段卡住不动,则说明reduce一个都没有执行。可能是输入的数据量过大。如果MR过程中reduce回退,有可能是偶发性的red...原创 2020-03-31 23:12:32 · 1738 阅读 · 0 评论 -
Hive数据倾斜
这两天有个hive的任务跑的特别慢,看日志是reduce阶段卡在了99%,虽然任务成功了,但是总耗时4个小时。。。这肯定是无法忍受的。下面记录一下调优的过程。工作中的代码涉敏,这边用简单的示例SQL。select coalesce(a.id,b.id), age,name,course, gradefrom( select id, age, name from tab...原创 2020-01-17 15:52:48 · 1512 阅读 · 1 评论 -
Hive时间函数from_utc_timestamp 把UTC标准时间切换到北京时间
首先简单地解释下几个含义:1. 时间戳(unix timestamp)表示以(1970-01-01 00:00:00)为起点,到现在的秒数。2. GMT和UTC先说结论,UTC与GMT基本上等同,误差不超过0.9秒。GMT,即格林尼治标准时间,也就是世界时。UTC,即协调世界时。UTC现在作为世界标准时间使用。用from_utc_timestamp 把UTC标准时间切换...原创 2020-01-10 20:11:46 · 15642 阅读 · 4 评论 -
Hive调优之 union all 效率低的问题解决
在工作中有时候会用到union all来进行合并,但如果用到union all的个数大于2的时候,效率就会变低。此时可以用insert into 的方法将原来的sql拆成多个,实测效率可以提升50%。代码示例:--用union allinsert overwtite table xxxxselect a, b, c from table1union all select d,...原创 2019-12-29 14:01:02 · 5457 阅读 · 0 评论 -
使用嵌套子查询优化hive多连接查询
在工作中,常用到left join来关联其他hive表进行查询,并且每个表都有相应的where条件。在数据量大的情况下,不同连接条件所在的位置对查询效率的影响还是很大的。下面举一些例子:现在有三个表,它们分别是:表一:user_info字段名 类型 备注 imei bigint type string date string 分区列...原创 2019-02-20 01:02:24 · 5028 阅读 · 0 评论 -
Hive动态分区和静态分区的用法
在工作有需要对hive表进行分区,对采集的数据按日,周,月分别进行统计计算。有两个分区字段:第一个是时间event_date,第二个是周期period。假如现在有两张表,一张ODS层的表source_table,另一张DWD层的表target_table。建表语句:create table source_table_01 ( id int, name string) p...原创 2019-02-17 15:07:42 · 5555 阅读 · 0 评论 -
Hive中复杂数据类型Map常用方法介绍
工作中在清洗数据的时候经常遇到一些map类型的数据的清洗、提取等。这边介绍一下我在工作中遇到的问题及相关的解决方法,其实如果知道的话都是挺简单的用法的,但是对于很多不太熟悉Hive Map函数的人来说不知道用法就意味着问题无法得到及时妥善的解决。我也是在Hive聚合函数中查找了好多资料,并且不断地去试才总结出map函数一些用法的。好了废话不多说,我开始介绍吧。假设有一张表,表名为t,其中字段p...原创 2019-01-12 20:58:34 · 22701 阅读 · 0 评论