- 博客(250)
- 资源 (43)
- 收藏
- 关注
原创 HiveSQL一天一个小技巧:如何统计当前时间点状态情况【辅助变量+累计变换思路】
本文总结了一种当前时间点状态统计的思路和方法,对于此类问题主要采用构造辅助计数变量及累加变换思路进行求解。常见的场景有:直播同时在线人数、服务器实时并发数、公家车当前时间段人数、某个仓库的货物积压数量,某一段时间内的同时处于服务过程中的最大订单量等
2023-04-04 17:14:51
713
3
原创 HiveSql一天一个小技巧:利用array_contains()函数进行容器存在性计数问题分析
由于题意要求了不能使用join等关联形式求解,通过题意分析此题本质为存在性计数问题,类似于java中我们构建一个HashSet()我们往里面Put数据的时候,每次检查一次是否有该值,有就记为1,最终统计重复的个数有多少个,这类问题也就是我们经常说的容器变换问题,而对应到Hive中时候我们如何构建容器呢?可以通过collect_set()或collect_list()函数来构建,那检查容器中是否存在某个数,我们用array_contains()函数,那么这样一个经典的存在性计数问题就很容易得到解决,具体公式如
2023-03-19 20:11:05
846
2
原创 HiveSQL一天一个小技巧:如何用倍数小表优化数据倾斜?
本文给出了一种利用倍数小表优化数据倾斜的一种通用方法,该方法适用场景为数据倾斜时不能用mapjoin的时候,也就是集群资源不足时候,通过该方法能够有效缓解数据倾斜,但不能根除数据倾斜。处理数据倾斜最好的方法还是采用分治思想,利用mapjoin一分为二的处理,倾斜key单独走mapjoin,非倾斜key走reduce join,最终将数据union all起来,采用mapjoin的方法切断了shuffle过程,也就没有数据倾斜这一说,缺点耗资源,前提是集群资源足够条件下,且满足mapjoin的条件。
2023-03-05 20:25:47
314
原创 HiveSQL一天一个小技巧:如何精准计算非连续日期累计值【闪电快车面试题】
本文给出了一种非连续日期准确求解累计值的通用方法。通过本文可以学习到:(1)连续日期的构造方法(2)非连续日期准确求解累计值的方法
2023-03-04 22:55:48
1397
原创 HiveSQL一天一个小技巧:清洗数据如何将同一组内稀疏字段用有值的数据填充完整?
本文通过实际需求中的案例,讲解了如何将分组内空值补充完整的技巧,通过开窗,min()/max() over(partition by 分组字段)来补充,注意点max()函数中根据实际情况写case when语句,或构造符合实际需求的条件,往往数据清晰中会用到这一技巧。
2023-03-01 15:49:46
1200
原创 HiveSql一天一个小技巧:如何巧用分布函数percent_rank()求去掉最大最小值的平均薪水问题
本文给出了一种利用percent_rank()求去掉最大最小值的平均薪水的方法,该方法更简洁高效,值得借鉴。通过本文需要掌握的姿势点如下:• PERCENT_RANK函数的作用、意义及使用场景是什么?• PERCENT_RANK函数的结果是如何计算?• PERCENT_RANK与cume_disk()函数的区别?• 如何利用PERCENT_RANK()函数的特性快速get最大、最小值?
2023-02-26 23:22:25
1976
1
原创 HiveSQL一天一个小技巧:如何设计一张1-180天注册、活跃留存表?
本文给出了一种1-180天注册活跃留存表计算模型,主要采用笛卡尔集的形式求解,这也是数据报表经常采用的方法,需要掌握。
2023-02-04 21:08:39
1116
3
原创 一种通过构建周期快照事实表优化用户回流、流失统计指标的方法
本文分析了一种通过数仓建模的形式来优化指标计算的方式,针对用户回流及流失这两个指标进行优化,通过对指标的分析,在DWS层构建周期快照事实表,维护用户历史至今末次登录时间周期快照表,简化了指标的计算,提升了性能。
2023-02-03 10:59:36
433
1
原创 HiveSQL高级进阶技巧,掌握这10个技巧,你的SQL水平将有一个质的提升!
HiveSQL高级进阶技巧,掌握这10个技巧,你的SQL水平将有一个质的提升!
2023-01-30 15:35:26
475
1
原创 SQL之推荐商品问题
本题主要考察对关联的认识,通过各种关联变换获取结果。通过本题可以获得认识:要获取表中数据之间的相互关系只能进行自关联获取;要想得到差集,需要通过left join+is null形式获取,hive中没有数组的交集、差集、并集的函数,因此只能采用关联得到结果。
2022-09-10 22:51:35
1257
原创 Hive任务执行报错:FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
Hive任务执行报错:FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
2022-06-29 16:27:48
5695
2
原创 不要再使用Load方式加载数据到Hive了,这种方式很low,你造吗?
一般很多企业加载HDFS数据到hive时采用load命令,包括很多文章也推荐该命令形式,但是这种命令并不是一种很好的方式,因为他的本质是剪切数据到Hive里面,这样数据其实是不安全的,而且load的时候很耗时间。其实我们在加载数据的时候,还有更高效,更便捷的加载方式,本文重点对这几种方式进行总结对比分析。...
2022-06-25 23:22:06
1337
8
原创 SQL避坑:当in,not in遇上null这种坑你避过吗?
用in的时候一般问题不大,使用not in的时候需要特别主要,结合本文恰当使用,之所以造成如此大的差异原因是对NULL的判断上,NULL的判断本质上is null或is not null,in或not in的判断是等于(=),所以对NULL判断是无效的,需要谨记。.........
2022-06-23 16:59:53
2898
转载 hive msck repair table 报错return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
hive msck repair table 报错return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
2022-06-23 11:54:34
1179
原创 Hive中Left Join基于or形式匹配连接的一种优雅实现方式
Hive中对于模糊匹配关联是不支持的,如or 连接,基于like的模糊匹配连接,对于此类问题往往需要找新的方案,对于or连接网上给出了解决方案如union的实现形式,本文借助于locate()+concat_ws()函数进行优雅的实现。......
2022-06-04 22:21:19
2574
3
原创 Hive中Left join的不等连接如何改写?
本文总结了hive left join 时采用不等连接的实现方法,其归为两类一类是基于区间的不等连接,一类是基于or形式的匹配连接,两种连接采用不同的实现思路。基于区间的不等连接采用left join 的嵌套形式,目的是确保数据条数和主表一致,基于or形式的匹配连接,给出了两种思路,一种采用union的形式,一种采用locate()匹配形式,其中locate()的形式更优雅。...
2022-06-04 21:43:10
1426
原创 DophineSheduler上下游任务之间动态传参案例及易错点总结
本文总结了DophineSheduler上下游任务之间参数传递的方法,并对其中的易错点进行了梳理,同时给出了具体参数传递的案例,读者可自行进行摸索。
2022-06-03 21:32:44
2412
2
转载 sqoop的eval工具使用
eval是sqoop提供的连接数据库的客户端工具。使用eval来查询表sqoop eval \--connect jdbc:mysql://123.123.4.52:3306/linshi_1 \--username root \--password 1313134 \--query "select * from e_board"使用eval来插入删除数据sqoop eval \--connect jdbc:mysql://11.34.33.22:3306/linshi_1 \
2022-05-30 10:42:46
1216
原创 HiveSql常用的时间维度计算方法(月初、月末、周几)及时间维度 表生成
本文总结了关于Hive中时间函数的使用及时间维度表的生成方法,时间维度表及时间函数在数据开发中经常被用到,这块需要切实掌目前格式支持:MM(月)YYYY(年)Hive3.0后支持Q表示季度select trunc(current_date,'MM') --月初select trunc(current_date,'YY') --年初last_day()last_day(string date) — 返回该月最后一天的日期select last_day(current_d.
2022-05-30 10:32:27
12242
2
原创 HiveSql一天一个小技巧:如何不使用union all 进行列转行
本文给出一种不使用传统UNION ALL方法进行 行转列的方法,其中方法一采用了concat_ws+posexplode()方法,利用posexplode的位置索引实现key-value之间的一一对应,方法二采用explode()+case when的方法,利用case when 进行转换实现key-value之间的一一对应。
2022-05-28 18:13:37
638
1
原创 HiveSql一天一个小技巧:高阶多维聚合函数应用
本文详细分析了Hive中高阶多维聚合函数的使用,由以上分析可以看出,高阶聚合函数实质上是对多维统计采用UNION ALL实现的一种优化,其性能也比UNION ALL实现性能要高,往往作为一种优化手段使用。......
2022-05-05 18:36:16
1611
1
原创 HiveSql一天一个小技巧:如何进行多容器的列转行
HiveSql一天一个小技巧:如何进行多容器的列转行2 小结欢迎关注石榴姐公众号"我的SQL呀",关注我不迷路0 需求表名:t表字段及内容:a b c001 A/B 1/3/5002 B/C/D 4/5问题:转多行输出结果如下所示:a d e001 type_b A001 type_b B001 type_c 1001 type_c 3001 type_c 5002 type_b B002 type_b C002 type...
2022-05-04 19:21:27
580
2
原创 HiveSql一天一个小技巧:如何成对提取字符串内容
本文给出了一种如何成对提取字符串内容技巧和方法,主要利用posexplode()函数进行求解,利用索引值相等提取出对应的字段内容。
2022-05-04 18:51:35
1106
原创 HiveSql面试题:连续签到领金币问题【百度-困难题-通用解法】
本文给出了一种连续签到领取金币的一种通用解法,通过窗口函数生成标签值进行辅助计算
2022-05-04 00:55:13
1229
3
原创 Sqoop同步数据数据中存在换行符导致两边数据条数不一致问题解决(AVRO格式应用)
本文讲解了Sqoop同步数据中存在特殊换行符导致两边数据不一致问题的解决方法,同时对AVRO对解决这一类问题进行了重点讲解,包括AVRO语法格式、Hive建表语法等。
2022-05-03 17:55:03
1087
原创 DolphinScheduler执行shell脚本方法总结
目录1 上传脚本到资源中心2 创建工作流3 修改脚本4 上线执行工作流5 小 结1 上传脚本到资源中心2 创建工作流注意:工作流创建完成保存时候所使用的的租户必须是linux可执行的用户,此处为root用户(也可以自己创建) 。租户在这里的概念就是linux中可使用的用户3 修改脚本4 上线执行工作流可以看到工作流执行成功5 小 结需要注意的问题点: 创建文件必须是DS调度器所支持的文件格式,......
2022-04-22 15:22:54
4517
原创 HIveSQL面试题52:近一个月发布的视频中热度最高的top3视频【抖音面试题,不得不去吐槽的一个题目】
这道题源自于牛客网,题目本身没什么难度,但在牛客中通过率极低,原因是题目本身但表达很模糊,很多定义没有直接给出,靠面试者猜,造成了误解,如果面试遇到这种题目90%挂,因为你不能准确理解题意,需要反复和面试官确认,即使做出来了,最终也是失败,而这题竟然出自抖音,面试出题也太随意了,无力吐槽,看来面试有时候真的靠缘分,哈哈哈。。。。
2022-04-17 13:15:03
1018
原创 HiveSql一天一个小技巧:如何在表的特定位置添加字段
hive表在某个特定的位置添加一个字段,在操作上是先在表的最后添加一个字段然后再将该字段移动到那个特定的位置第一步:先在最后一个位置增加字段alter table table_name add columns now_time string comment '当前时间';第二步:通过移动位置的指令移动到指定位置alter table table_name change now_time now_time string after id;Hive整体更改指令ALTER TAB.
2022-04-15 15:02:48
4671
1
原创 HiveSql一天一个小技巧:如何不借助其他任何外表,产生连续数值
0 需求描述输出结果如下所示:12345...1001 问题分析方法一:起始值(start)+步长(diff)=结束值(end)select split(space(5), ' ')+----------------------+| _c0 |+----------------------+| ["","","","","",""] |+----------------------+select posexplode(spl
2022-04-12 22:35:04
850
原创 HiveSql一天一个小技巧:如何获取稀疏表字段中最新的值所对应的其他字段值
获取某最新日期所对应的其他值,此类问题往往利用first_value()函数来求解。如果表是稀疏的,各个字段存在NULL值,且NULL值分布也不均匀,此时要想一并取出,窗口中的排序需要加限定条件才可以,此类窗口为带有条件限制的动态窗口,动态窗口的控制往往是通过order by来限定的。另外需要注意:first_value()函数获取的是窗口内截止当前行所指定的字段第一条非null值的值,如果该字段中所有值都为null,那么只能返回NULL,也就是说他可以过滤NULL值,因而在获取字段值的时候也就没必要加ca
2022-04-10 18:37:23
879
原创 HiveSql一天一个小技巧:一种字符串展开的技巧和方法
本文给出了一种字符串展开的技巧和方法,充分利用了posexplodde()函数的使用技巧。其核心方法为利用步长值生成索引,再利用起始值加索引值获取展开值,该方法在顺序拓展数据中经常使用,务必掌握。
2022-04-09 23:33:49
472
3
原创 HiveSql一天一个小技巧:数据清洗如何用距离空值记录最近的一条记录补全空值【稀疏表补全方法】
用户一个session中发生浏览点击事件时候,url往往在浏览事件时候给出而点击事件中往往没有给出,这种表格往往是稀疏的,如果此时想知道用户点击了某个按钮后当前页面是哪个,那么我们往往就需要利用这种方法补全数据来获取当前点击事件所对应的页面
2022-04-09 19:44:50
620
原创 HiveSql一天一个小技巧:多指标累计去重问题
目录0 需求1 数据准备2 数据分析3 小结0 需求假设表A 为事件流水表,客户当天有一条记录则视为当天活跃。表A:time_id user_id2018-01-01 10:00:00 0012018-01-01 11:03:00 0022018-01-01 13:18:00 0012018-01-02 08:34:00 0042018-01-02 10:08:00 0022018-01-02 10:40:00 003...
2022-04-09 19:01:19
2128
6
人工智能(深度学习)相关视频及资料
2018-06-26
STM32开发工具及相关资料包
2018-06-26
kafka细心原理与实战
2018-06-25
三套大数据实战项目集合(视频讲解+源代码+相关文档+相关软件资料)
2018-06-22
大厂算法面试题库中高频出现的30道典型题.pdf
2020-04-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人