hive
文章平均质量分 64
weixin_42412645
这个作者很懒,什么都没留下…
展开
-
hive求某天是当年第几周形如yyyyww
两者是有差异mysql是从周一作为这周起始时间,hive是从周日作为这周起始时间。mysql有date_format求当年第几周。为了同mysql保持一致需要当前时间减1天。同时hive也有相应的函数。原创 2022-08-10 14:14:27 · 771 阅读 · 1 评论 -
HIVE实现连续时间间隔时间序列
hive生成连续时间间隔时间序列。比如每隔10分钟生成连续时间序列原创 2022-06-07 14:44:02 · 2397 阅读 · 0 评论 -
HIVE生成数字全局唯一键ID
1.row_number() over() (生成全局递增唯一ID)selectrow_number() over() id,afrom test1此方法会产生一个reduce。数据量比较大会产生数据倾斜。2.生成全局唯一数字ID(非递增连续)先将原始数据随机分成101份(可以理解为步长)create table test2asselecta,cast(rand()*100 as bigint) numfrom test1再每份内排序后生成一个唯一IDselect原创 2021-06-17 20:44:17 · 2576 阅读 · 2 评论 -
HIVE列转行注意点
HIVE列转行注意分隔成数组字段不能为null当hive进行列转行需要注意分割成数组不能为null,不然这列就会漏掉。原始数据结果展示对于这样的情况只能用union all将两部分数据合起来selecta,bbfrom testlateral view explode(split(b,’:’)) num as bbwhere b is not nullunion allselecta,b bbfrom testwhere b is null或者用nvl将null转化原创 2021-06-09 20:55:48 · 168 阅读 · 2 评论 -
HIVE解析JSON数组
HIVE解析JSON数组数据示例:[{“payAmount”:“375000”,“payChannelCode”:“BOC”},{“payAmount”:“376000”,“payChannelCode”:“AOC”}]1.get_json_object函数提取json数组里面特定字段值get_json_object可以提取json数组指标位置的值(跟数组一样)selectget_json_object('[{"payAmount":"375000","payChannelCode":"BOC原创 2021-06-07 20:22:10 · 4859 阅读 · 0 评论 -
hive正则表达式反向引用
反向引用捕获会返回一个捕获组,这个分组是保存在内存中的,不仅可以在正则表达式外部通过程序进行引用,也可以在正则表达式内部进行引用,这种引用方式就是反向引用。根据捕获组的命名规则,反向引用可分为:1.数字编号组反向引用:\k或\number2.命名编号组反向引用:\k或\‘name’捕获组是匹配子表达式的内容按序号或者命名保存起来以便使用,主要是用来查找一些重复的内容或者替换指定字符。J...原创 2020-01-22 10:21:31 · 1317 阅读 · 0 评论 -
SQL16号统计1~15号数据,1号统计上月15~月底数据
由于我司提供的脚本周期只有天,周这种。于是想用周期为天来执行脚本。逻辑如下:selectday,count(*)from testwhere( ‘20191215’ = ‘date’ and day>=‘20191201’ and day<=‘20191215’)or(‘20200101’ = ‘date’ and day>=‘20191215’ and day...原创 2020-01-19 09:41:10 · 746 阅读 · 0 评论 -
hive存储复杂的json格式
1.hive复合数据类型 ARRAY < data_type > MAP < primitive_type, data_type > STRUCT < col_name : data_type [COMMENT col_comment], ...> 2.json建构于两种结构 “名称/值”对的集合(A collection of name...原创 2020-01-13 11:59:06 · 1798 阅读 · 0 评论 -
使用max函数实现唯一性
原始数据type line amount 1 a 111 b 222 a 1112 b 2221.列转行select type, max(case when line='a' then amount else 0 end ) a, max(case when lin...原创 2020-01-10 11:50:15 · 323 阅读 · 0 评论 -
hive使用size函数求分割后字符串个数注意点
1.split的字段串是空串(a='')size(split(a,','))=12.split的字段串是null(a is null)size(split(a,','))=-1原创 2020-01-02 15:48:42 · 3107 阅读 · 0 评论 -
hive时间戳转化格式化
1.bigint转化成时间戳 1.1 bigint为13(毫秒级) 1.date_format函数 select date_format(cast(1577379134405 as timestamp),'yyyyMMddHHmmss') 2.from_unixtime函数 select from_unixtime(cast(substr(15773791...原创 2019-12-27 17:37:13 · 2787 阅读 · 0 评论 -
hive实现like模糊配对
testa表(字段a) aaa bba cccddd dddaaatestb表(字段b) a b 1. 使用like+concat模糊配对select a.afrom testa a ,testb bwhere a like concat('%',b.b,'%')group by a.a2. 使用locate函数select a.a...原创 2019-12-26 19:57:43 · 5198 阅读 · 0 评论 -
hive字符串截取
1.根据分割符截取1.1 split函数selectsplit(‘a????️c’,’:’)[0],split(‘a????️c’,’:’)[2]1.2 regexp_extract函数selectregexp_extract(‘a????️c’,’(.)????.)????.)’,1),regexp_extract(‘a????️c’,’(.)????.)????.)’,3)selectregexp_extract(‘a????...原创 2019-12-26 09:48:41 · 17814 阅读 · 0 评论 -
hive除重的几种方法
1.除重不做统计操作1.1使用distinctselectdistncta,bfrom test1.2使用group byselecta,bfrom testgroup bya,b1.3使用分组函数selecta,bfrom(selecta,brow_number() over(partition by a,b) as row_idfrom tes...原创 2019-12-24 19:40:40 · 665 阅读 · 0 评论 -
hive性能优化使用group by替代distinct原理
日常业务统计中经常使用除重(distinct)操作,但是当出现某一组数据特别多时就会出现数据倾斜。于是在SQL编写的时候就使用group by来代替distinct,从而让执行效率提升。下面说一下个人的理解。原始数据page_test表1.distinct底层实现原理(select city,count(distinct user_id) from page_test group by ci...原创 2019-06-02 17:26:43 · 7781 阅读 · 1 评论 -
hive性能优化使用map join
在实际业务逻辑中经常进行两张表的join,不管是两张大表关联还是一张大表一张小表关联会出现经常数据倾斜。下面介绍一下我在工作使用的总结: 原始数据page_test ![原始表page_tes](https://img-blog.csdnimg.cn/2019060218111211.png) 原始数据city1.Common join原理(select a.user_id,...原创 2019-06-02 20:06:21 · 4754 阅读 · 0 评论 -
hive某一特殊值较多出现数据倾斜
最近业务说数据出现异常个别端的数据量级超大,于是查看了一下代码,看到最近程序出现了数据倾斜的情况。于是查看了一下数据分布情况,看到两张表join后空值类特别大。注意:这里的空值为’’,不是null于是将右表的空值剔除掉key is not null and trim(key) !=’’.实际业务中还有很多默认的特殊值比如:-1这种。1.特殊值特殊处理来解决2.在on条件on case wh...原创 2019-06-14 09:55:22 · 490 阅读 · 0 评论 -
hive多次join未进行谓词下推
最近执行了一段多表join出现数据倾斜的情况,下面说一下处理过程:1.首先去yarn界面查看到job出现个别任务reduce特别的慢2.检查一下on条件里面的字段类型是否一致,比如on a.id=b.id(a.id为bigint,b.id为string),结果都是一致。3.查看一下主表的数据分布情况,确实有个别的类比较大,此时将count(distinct id)改为sum() group ...原创 2019-06-09 23:11:26 · 481 阅读 · 0 评论 -
hive大量小文件处理方法总结
大量的小文件对namenode产生很大压力,加上最近平台要求清理小文件。下面总结一下工作中用到的小文件方法。1.参数法(普遍方法,适用于大量map端小文件和reduce后数据量还比较大。比如:日志文件从text格式insert到orc格式)1.map端参数set mapred.max.split.size=256000000;//每个Map最大输入大小set mapred.min.spli...原创 2019-12-30 16:46:43 · 2431 阅读 · 0 评论 -
Hive几个特别有意思的函数
1.str_to_map(text[, delimiter1, delimiter2])函数返回一个map<string,string>其中Delimiter1将文本分成K-V对,Delimiter2分割每个K-V对。对于delimiter1默认分隔符是’,’,对于delimiter2默认分隔符是’=’。例如1:> select str_to_map(‘key1:value1...原创 2019-06-04 22:54:45 · 429 阅读 · 1 评论 -
hive报metadata.HiveException: Hive Runtime Error while processing row (tag=0)错误
今天跑一条统计的SQL出现Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing row (tag=0) {“key”:错误报出的异常是说group by数字格式异常,后来核查了一下SQL发现group by后面出现了重复。个人觉得报出这样的异常是由于s...原创 2019-06-11 19:54:05 · 7408 阅读 · 1 评论 -
hive实现树形结构展开
最近遇到了树形结构存储,比如地市,节目目录这种结构。比如:节目目录展开drop table aps.tmp_q1;create table aps.tmp_q1 as select epg_cate_id alternatekey, epg_cata_ttl chinesetitle, first_py englishtitle, bppc_id bppcid, par...原创 2019-07-01 10:55:01 · 5797 阅读 · 1 评论 -
hive字段类型为bigint但在where条件却用了字符串a!=''导致执行计划和结果有问题
今天写了一段SQL,代码逻辑没有问题,但是结果老是跟实际不符合。于是用explain查了一下执行计划也没有什么问题。于是只能一步一步临时表的查问题。最后定位到where a!=’’。下面是hive支持的隐式类型转换图表hive测试结果:...原创 2019-07-22 16:16:26 · 1687 阅读 · 0 评论 -
kill(杀死)hive进程(job)的2种方法
先去yarn界面查找你要杀死的程序,在最右边ApplicationMaster点进入下面界面方法1.yarn application -kill application_Id方法2.hadoop job -kill job_id原创 2019-07-26 17:16:04 · 8240 阅读 · 1 评论 -
hive数值超出了int大小出现负数
今天统计SQL结果出现负数,代码查了一遍,重新跑了代码片段都是正的,找了好久看了结果都是10亿多了,然后看到定义字段为int类型原创 2019-06-12 16:40:31 · 2924 阅读 · 1 评论