
hive
programmer_trip
这个作者很懒,什么都没留下…
展开
-
sql需求处理篇-统计指定某年中有多少个周一至周日
需求描述统计某一年中周一至周日分别有多少天with date_list as( select date_add("2020-01-01", a.pos) as dates from (select posexplode(split(repeat("m", datediff("2020-12-31", "2020-01-01")), "m"))) a)select datesfrom date_list ;----2020-01-012020-01-022020-0原创 2022-04-21 21:54:44 · 559 阅读 · 0 评论 -
hive性能调优
小文件过多的问题:小文件过多会会导致占用过多的内存资源,因为namenode在内存中维护文件系统树和最新的元数据信息,每个小文件都会占用150字节的内存,会影响查询效率导致小文件过多的原因: 使用动态分区,会产生很多零碎的小文件,插入分区表时最好指定分区字段的值; reduce过多会产生很多小文件,设置合理的reduce数减少小文件数量的措施:1 源头解决:在日增数据中,可以通过设置写入数据的参数,设置map端,reduce端输出时进行文件合并,设置一个输出文件大小均值原创 2021-07-26 15:29:52 · 619 阅读 · 0 评论 -
通过脚本中启动presto的方式备份hive表
第一次做的时候需要手工执行多次create table if not exists origin_tableName_bak asselect * from origin_tableName;后来就想着能不能使用shell脚本的方式只要传入需要备份的表就可以自动备份,并打印我们关注的信息:备份是否成功以及备份前后的数据条数for par in $@;do echo $par#./presto.jar --server szzb-bg-prd-etl-13:9000 --catalog hi原创 2021-05-26 09:32:51 · 357 阅读 · 0 评论 -
hive分区表新增字段并且新增字段的数据要写入当前和历史分区三种方法
由于之前的工作中就算是分区表中插入字段,也是只对当前数据负责,不需要管历史数据,所以没考虑过如果加字段之后,对历史分区如何插入数据的问题,直到一次面试,面试官问了这个问题,我决定用博客的形式记录下来,下面是加字段加不加cascade关键字的区别-- 内容准备test_partition.txt -- 历史分区没有新增字段1 zhangsan 1000 202101012 lisi 500 202101013 wangwu 6000 202101014 zhaoliu 4600 20210101原创 2021-05-09 17:00:23 · 3341 阅读 · 3 评论 -
hivesql面试题-两个List转多行并一一匹配(posexplode函数)
题目:假设现有一张Hive表,数据格式为:col1col2a,b,c1:00,2:00,3:00d,e,f4:00,5:00,6:00……表中两个字段均为String类型,现在需要将行数据拆分转为多列如下col1col2a1:00b2:00c3:00d4:00e5:00……该如何实现解决方法:select split(col1,",")[idx] as col1 ,type as原创 2021-04-21 09:55:52 · 1396 阅读 · 0 评论 -
spark读取hive表抛出org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
当spark读取hive表时,抛出下面的异常org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient at org.apache.hadoop.hive.ql.metadata.Hive.getAllDatabases(Hive.java:1原创 2020-09-22 19:40:35 · 2721 阅读 · 2 评论 -
Hive的开窗函数小结以及利用排名函数查询topN例子
开窗函数的关键字是 over,一般用在聚合函数的后面开窗函数与group by 的比较开窗函数用于计算基于组的某种聚合值,并且对每个组返回多行,但是group by 一个组只返回一行over() 不加参数,窗口大小为所有行over(partition by 字段) 窗口大小为所在分区的大小over(partition by 字段 order by 字段 [asc/desc]) 窗口大小为分区内的第一行一直到当前行over(distribute by 字段 sort by 字段 [asc/d原创 2020-07-01 21:20:11 · 1171 阅读 · 0 评论