
hive
小涛手记
这个作者很懒,什么都没留下…
展开
-
hivesql 将数据处理成复杂json
原数据:bankid是array类型。原创 2023-06-27 14:42:29 · 735 阅读 · 0 评论 -
hivesql 炸裂函数
可以在两个字段集合同时炸裂后再关联商品维表取正确的数据。实际情况根据自己业务场景考虑。原创 2023-06-25 18:56:29 · 703 阅读 · 1 评论 -
hive array[bigint]转string
hive array[bigint]转string原创 2022-09-19 18:18:40 · 6285 阅读 · 0 评论 -
数仓ads层表脚本
#!/bin/bashsource /etc/profileif [ -n "$2" ] ;then do_date=$2else do_date=`date -d "-1 day" +%F`fi# 创建人: xiaotao# 创建日期: Created on 2022-04-24# 数据开发功能描述: 兑换码兑换商品打卡数据(习惯熊打卡数据)ads_ks_redeem_code_df="set hive.exec.dynamic.partition=true;s原创 2022-04-25 22:25:42 · 728 阅读 · 0 评论 -
sparksql特殊符号转义
1. 符号 .sqlsplit(app_version, '\\.')[1]sparksqlsplit(app_version, '\\\\.')[1]原创 2022-01-30 13:45:16 · 2754 阅读 · 0 评论 -
hive rows between和range between使用
create table tmp( name string, class tinyint, cooperator_name string, score tinyint)row format delimited fields terminated by '|';adf|3|测试公司1|45asdf|3|测试公司2|55cfe|2|测试公司2|743dd|3|测试公司5|nfda|1|测试公司7|80gds|2|测试公司9|92ffd|1|测试公司10|95dss原创 2021-11-01 16:27:48 · 2199 阅读 · 0 评论 -
hive 模拟定位数据倾斜到具体sql
用户信息表select * from b;+-------+---------+--+| b.id | b.name |+-------+---------+--+| 1 | 张三 || 2 | 李四 || 3 | 赵六 |+-------+---------+--+用户爱好记录表select * from c;+-------+----------+--+| c.id | c.aihao |+-------+----原创 2021-08-05 21:01:34 · 722 阅读 · 2 评论 -
hive行列转换
1.一行转多行--数据vi test.txta b 1,2,3c d 4,5,6-- 建表create table test(col1 string,col2 string,col3 string)comment'一行转多行测试表'row format delimited fields terminated by '\t'stored as textfile;-- 加载数据load data local inpath '/root/col_to_row.tx原创 2021-08-05 18:04:19 · 517 阅读 · 0 评论 -
hive四个排序
数据准备-- 测试表select * from test;+--------------+--------------+--------------+--+| test.field1 | test.field2 | test.field3 |+--------------+--------------+--------------+--+| 1 | 6 | 14 || 2 | 3原创 2021-08-05 16:10:58 · 896 阅读 · 0 评论 -
hive小文件合并CombineHiveInputFormat
1.数据准备测试表create table test( field1 int, field2 int, field3 int)comment'小文件合并及排序测试表';数据insert into table test values(1,6,14);insert into table test values(2,3,4);insert into table test values(6,2,6);insert into table test values(1,3,2原创 2021-08-05 15:30:10 · 2867 阅读 · 0 评论 -
hive解析json
-- json数据{"OTHER_INFO":{"MOBILE_ADDR":"四川省内江市潘咱陛路1233号闷羞小区19单元484室","DATA2":{"CERT_ADDR":"宁夏回族自治区固原市薄精路3992号裸糕氏小区9单元1092室"},"DATA1":{"MOBILE_NUM":"15360425546"},"MOBILE_NUM":"15902875723"},"APP_NO":"RVVG5252500393","CHANNEL_SOURCE":"微信","BUSINESS_CODE":"T原创 2021-08-04 18:27:21 · 262 阅读 · 0 评论 -
hive数据倾斜的优化
一.join操作数据倾斜1.mapjoinmap join 默认开启set hive.auto.convert.join = true(0.11版本后默认是true)set hive.mapjoin.smalltable.filesize=25000000(设置小表的大小,默认就是25M)不管大小表放左边还是右边,自动将小表放入内存,然后在map端顺序扫描大表跟内存中的数据进行join,没有reduce阶段,没有shuffle2.类型不一致关联字段不一致引发的数据倾斜操作有一个a表关联字段是原创 2021-07-29 14:38:30 · 816 阅读 · 0 评论 -
hive map join
hive map joinmap join 默认开启不管大小表放左边还是右边,自动将小表放入内存,然后在map端顺序扫描大表跟内存中的数据进行joina 大表user_id oid0001,B0001,A0002,C0003,D0001,E0001,F0004,W0001,Zb 小表user_id name0001,王0002,刘0003,赵0004,高sqlselecta.user_id,a.oid,b.namefrom ajoin bon a.u原创 2021-07-29 11:48:38 · 309 阅读 · 0 评论 -
hivesql 练习3
--源表name,subjectid,age,score张三,0001,22,45张三,0002,22,56李四,0002,18,88赵五,0002,24,66--目标表 (科目0001没有成绩的学生name和age)name,age李四,18赵五,24create table score_t(name string,subjectid string,age string,score string)ROW FORMAT DELIMITEDFIELDS TERMINATE原创 2021-07-15 23:06:00 · 166 阅读 · 0 评论 -
hivesql练习2
--源表:name,sport张三,足球张三,篮球张三,排球李四,排球李四,足球赵五,排球顺序 篮球,足球,排球--目标:name,sport张三,篮球李四,足球赵五,排球create table sport_tab(name string comment'姓名',sport string comment'体育项目')ROW FORMAT DELIMITEDFIELDS TERMINATED BY ','--计算:selectname,casewhen原创 2021-07-15 22:19:09 · 134 阅读 · 0 评论 -
hivesql练习
源表:省,省id,市,市id,区,区id目标表:地区,地区id,上层地区id省,省id,null市,市id,省id区,区id,市id一:selectif(`省id` is null,`区`,if(`市id` is null,`省`,`市`)) as `地区`,if(`省id` is null,`区id`,if(`市id` is null,`省id`,`市id`)) as `地区id`,if(`省id` is null,`市id`,if(`市id` is null,0,`省id`)原创 2021-06-30 22:29:27 · 181 阅读 · 0 评论 -
hive中拉链表
既反映了数据历史状态,又比较节省空间适用于数据量比较大,而且会不断增长(典型:订单表)表中的部分字段会被update,如用户的地址,产品的描述信息,订单的状态等等;需要查看某一个时间点或者时间段的历史快照信息,比如,查看某一个订单在历史某一个时间点的状态,比如,查看某一个用户在过去某一段时间内,更新过几次等等;变化的比例和频率不是很大,比如,总共有1000万的会员,每天新增和发生变化的有10万左右;如果对这边表每天都保留一份全量,那么每次全量中会保存很多不变的信息,对存储是极大的浪费;.原创 2021-05-15 00:23:31 · 3185 阅读 · 10 评论 -
hive条件查询,起完job就卡住不动了,也不报错,日志也没问题,
hive简单查询没有问题0: jdbc:hive2://wxt01:10000> select * from `user`;OK+------------+----------------------+--+| user.guid | user.dt |+------------+----------------------+--+| zhangsang | 2020-03-01 11:32:22 || zhangsang | 2020-03-02 1原创 2021-05-13 17:01:01 · 1165 阅读 · 0 评论 -
hivesql 连续活跃类需求
1.求出连续活跃用户,连续活跃天数以及连续活跃用户的平均年龄源表:guidagetime0001182021-02-250002222021-02-250002222021-02-26…计算:with o as(selectuid,max(days) as days,max(age) as agefrom( select uid, age, days from ( select uid,原创 2021-04-29 16:11:16 · 194 阅读 · 1 评论 -
hive 动态分区演示
hive 动态分区按照某个字段自动的将数据加载到指定的分区中即在插入数据时,不指定具体的分区列值,而是仅仅指定分区字段1.建临时表create table demo(id int,birthday string,cost int)row format delimited fields terminated by '\t';2.加载数据load data local inpath '/root/demo' into table demo;3.数据1 2010-11-12 120原创 2021-04-13 11:10:53 · 196 阅读 · 0 评论 -
hivesql练习lag函数和lead函数
找出连续两个或者两个以上是空座位的seat_id.表:cinemaseat_idfree1120314151对于如上样例,你的查询语句应该返回如下结果。seat_id345注意:seat_id 字段是一个自增的整数,free 字段值(‘1’ 表示空余, ‘0’ 表示已被占据)。连续空余座位的定义是大于等于 2 个连续空余的座位sql:selectseat_idfrom( selec原创 2021-04-09 12:30:28 · 1155 阅读 · 1 评论 -
某家面试笔试题
一.a,b两hive表结构如下,基于hivesql回答下述问题:解答1题:selectif(a.key = b.key,concat(a.key,',',b.key),if(a.key is null,b.key,a.key)) as key,a.value,b.valuefrom a full join bon a.key = b.key;数据+------+----------+----------+--+| key | a.value | b.value |+---原创 2021-04-01 16:06:59 · 123 阅读 · 0 评论 -
hive数据倾斜
hive数据倾斜1. join时产生数据倾斜1.1 小表join大表使用mapjoin1.2 大表join大表1.2.1 key为空值造成的影响空值太多join时,会把所有key为空值的数据发送到同一个reduce中,发生数据倾斜解决方法:空值不重要的情况,先把空值过滤掉,在进行join空值不能过滤,使用case when 对空值附上随机值,然后进行join,这样会把所有key为空值的数据发送到不同的reduce中去处理.1.2.2 热点key可以将热点数据和非热点数据分别进行处理原创 2020-12-15 12:26:50 · 2197 阅读 · 4 评论 -
hive 中 join操作底层mr图解
join分为mapjoin 和 common(普通) joinmapjoin 就是没有reduce阶段,只有map阶段,在map阶段进行join操作.common join 是在reduce阶段进行join操作.以common join为例:表a:idname1小王2小张表b:idage132222select a.id,name,age from a join b on a.id=b.id;...原创 2021-03-27 16:06:46 · 878 阅读 · 2 评论 -
hive架构及执行过程
hive架构1.用户接口 ClientCLI(hive shell)、JDBC/ODBC(java访问hive)、WEBUI(浏览器访问hive)2.元数据 Metastore用来存储hive的元数据使用关系型数据库来存储元数据,默认存储在自带的derby数据库中,推荐使用mysql存储Metastorehive的元数据包括:表名, 表所属数据库, 表的拥有者, 表的列, 表的分区, 表的属性(表是内部表还是外部表), 以及表数据所在的目录3.Hadoop使用hdfs进行存储,使用mapr原创 2021-03-25 16:14:22 · 403 阅读 · 0 评论 -
hivesql:行列转换
1.行转列(将多行数据合并成一列)1.1源表person_info:nameconstellationblood_type张三白羊座A李四射手座A王五白羊座B赵六白羊座A刘七射手座A1.2需求:把星座和血型一样的人归类到一起,如下表:cbtname射手,A李四,刘七白羊,A张三,赵六白羊,B王五1.3函数:concat(字段1,分割符,字段2) --将一行的多个字符串合并成一个字符串原创 2021-03-12 18:43:53 · 1160 阅读 · 1 评论 -
hivesql练习(1)分组,聚合,累加,join,打标记,多行转多列
给定订单表 sale_orderidsale_dtuser_idsku_idsale_countpriceamount12019-01-0111001210020022019-01-0221001110010032019-02-103100128016042019-02-1121002210020052019-03-0131002110010062019-03-01310011原创 2021-03-11 20:45:03 · 1006 阅读 · 4 评论 -
hive自定义函数
1.UDF(一对一)在idea中创建一个maven工程,然后导入依赖:<dependencies><!-- https://mvnrepository.com/artifact/org.apache.hive/hive-exec --><dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-exec</artifactId>原创 2021-03-10 16:34:08 · 176 阅读 · 1 评论