hive
文章平均质量分 70
牧码文
只要思想不滑坡,从此不怕bug多
展开
-
HIVE自定义UDTF函数
其实就是将参数列表封装成了StructObjectInspector对象,如果想要校验参数,那么通过上述的方式,可以看到,调用getAllStructFieldRefs方法,获取所有的输入列列表,遍历就可以取到参数列表了。HIVE提供了丰富的内置函数,但是对于一些复杂逻辑还是需要自定义函数来实现,对此,HIVE也提供了一些自定义的接口和类。注意在UDTF函数中,会出现传入数据异常的问题,在这里我并没有校验参数,在实际生产中是需要校验参数的。UDAF:多进一出,多对一的关系数据。顾名思义,打扫干净,下一位。原创 2022-09-02 21:43:54 · 985 阅读 · 0 评论 -
HIVE自定义UDAF函数
/ 确定各个阶段输入输出参数的数据格式ObjectInspectors public ObjectInspector init(Mode m , ObjectInspector [ ] parameters) throws HiveException;// 保存数据聚集结果的类 abstract AggregationBuffer getNewAggregationBuffer() throws HiveException;...原创 2022-08-31 23:38:54 · 1588 阅读 · 0 评论 -
HIVE多维分析函数:grouping sets、cube、rollup
这里with cube就等同于grouping sets ((department,name,age),(department,name),(department,age),(department),(name,age),(name),(age),())HIVE的多维分析函数,配合group by 使用,通常的group by只能对单维度的字段进行分析聚合操作,如果想要获取不同组合字段的聚合操作,就需要写多个group by 组合,HIVE提供了内置的函数用于上述这种多维分析。...原创 2022-08-29 22:36:23 · 3030 阅读 · 1 评论 -
sql中常用到的正则表达
iignore,不区分大小写。mmultiline,多行匹配。s使用.时包含换行符\n。gglobal,全局匹配。原创 2022-07-31 21:32:44 · 1143 阅读 · 0 评论 -
HIVE存储格式和压缩方式详解
引用:https://blog.csdn.net/yizhiniu_xuyw/article/details/113811001LZO压缩算法特点:SNAPPY压缩算法特点:尽管 Snappy 应该相当轻便,但它主要针对 64 位 x86 兼容处理器进行了优化,并且在其他环境中运行速度可能较慢。BZIP2压缩算法特点:HIVE的压缩格式压缩可以存在很多地方,在mr任务运行时候,map端溢写到磁盘,以及reduce端从磁盘中拉取文件,都有大量的IO操作,都可以设置压缩方法。设置压缩格式的参数如下所示HIVE配原创 2022-07-11 22:37:25 · 2050 阅读 · 2 评论 -
sql中常用的正则匹配
字符中能匹配到就返回1,不能匹配到就返回02.符号’^’代表开头,需要开头是某个字符3.符号’$’代表结尾,需要结尾是某个字符4.符号’.’代表任意一个字符,可以匹配上任何一个字符5.符号’+’前面的字符至少出现1次6.符号’*’前面的数字至少出现0次7.符号’?’前面的数字最多出现1次8.符号’()’代表一个整体,全体匹配9.符号’[]’匹配符号内的任何一个字符即可注意:如果想要匹配字符’[’ 或者’]‘,需要把’[‘放在’]‘前,匹配’]'也是同理符号[]中可以使用’原创 2022-07-09 12:17:47 · 9853 阅读 · 2 评论 -
HIVE内置函数strToMap --源码解析
所在的类:org.apache.hadoop.hive.ql.udf.generic.GenericUDFStringToMapHIVE实现的内置函数功能是可以传入三个参数:举例:输出:那么HIVE是如何实现的?二、evaluate方法该方法涉及到的两个知识点可以看到是一个接口中声明了这个方法,那么一定有实现的地方传入一个object,返回一个object,可以看作是一个object的转换器可以看到,传入一个切割字符,传入一个limit参数,这个是限制切割的数组长度,比如是2,那么切割出来的原创 2022-07-06 22:45:30 · 602 阅读 · 0 评论 -
JSON转MAP前后数据校验 -- 自定义UDF
检查参数:initialize方法二、evaluate方法处理逻辑:evaluate方法三、测试打包上传集群,创建测试函数测试1:测试2:原创 2022-07-05 07:00:00 · 190 阅读 · 0 评论 -
HIVE如何校验map类型数据 -- 比较json和map的转换前后数据一致性
HIVE如何校验map数据对于json转map之后,通过转换前的json和转换后的map做checksum是不可行的,因为两者结果差别还是挺大的结果:二、思路那么对于json转map后的checksum应该怎么做?或者如何确定转换的结果没有错?采用的方法是通过get_json_object和element_at方法来确定转换前后结果是否又误。将转换后所有的map结果的key提取出来然后和转换前后的json和map进行关联提取每个key数据关联求解实现方法2上面上个方法虽然可以得解,但是有一些很原创 2022-07-05 07:30:00 · 659 阅读 · 0 评论 -
HIVE内置函数hash() -- 源码解析
首先HIVE提供的hash()内置函数的源码是怎么要求的?hash内置函数在类中表明:在初始化参数的时候,并没有做任何的校验,直接返回了一个Int类型,所以在编译阶段是可以随意通过的,无论传入什么参数可以看到在处理阶段是可以传入多个参数的,也就是说hash()这个函数可以传入多个参数,其实最主要的处理方法是调用了ObjectInspectorUtils.getBucketHashCode(fieldValues, argumentOIs);getBucketHashCode方法点进去看一下这个方法是原创 2022-07-04 23:21:20 · 1934 阅读 · 0 评论 -
HIVE内置函数map_keys -- 源码解析
一、initialize方法在上面的源码之后,需要知道返回的列表是怎么执行的,点进去ObjectInspectorFactory类看getStandardListObjectInspector方法其中cachedStandardListObjectInspector的声明如下二、evaluate方法getDisplayString方法getStandardDisplayString的方法:调用了重载方法,一点点的把数组内的数据append到字符中...原创 2022-07-04 23:15:33 · 646 阅读 · 0 评论 -
HIVE 中的数据类型检查器 -- ObjectInspector 源码详解
HIVE中的数据类型分为了几种:PRIMITIVE, LIST, MAP, STRUCT, UNION;看源码可以看到。一、PRIMITIVE PrimitiveObjectInspector PrimitiveCategory:二、LIST主要有几种方面理解:主要的实现和常用到的实现接口和类如下: StandardListObjectInspector其中接口ListObjectInspector中的getList方法也可以返回一个List类型StandardListObject原创 2022-07-01 07:00:00 · 881 阅读 · 0 评论 -
sql解决连续登录问题变形-节假日过滤
连续登录天数之前讲解过有两种解法,可以解决连续登录问题,那么在实际生产中也是经常使用到,但是对于一些此类问题的变形,是否能够轻松解决?最近接到一个需求,也不算是需求,是一个小的功能实现。之前一直再做事件告警的需求,需要对告警事件进行反馈,判断是否是当日反馈。最开始实现时候想法很简单,只考虑到了双休日,就设定如果是双休日的告警事件,在周一时候反馈就认为是当日反馈,当时是这么实现的:如果是周六,反馈日期增加2,如果是周日,反馈日期增加1但是在实际使用中,发现了存在节假日的卡点,尤其是上半年的节假日比较多,原创 2022-06-30 07:00:00 · 497 阅读 · 0 评论 -
HIVE中替换UDF神器-- TRANSFORM()函数
TRANSFORM()以HIVE官网中的一个例子为例讲解一下TRANSFORM函数的使用比如需要对一个时间戳转换为是周几,就是输入一个时间戳,返回这个时间戳是周几。TRANSFORM语法:简而言之,就是从一个表中读取字段,用python脚本处理,然后输出新的字段。那么python脚本怎么使用呢?python中通过sys.stdin来获取输入的字段,然后通过循环处理每一行数据即可处理起来很简单,借助python得天独厚的优点,可以很方便的处理复杂逻辑根据HIVE官方提供的案例,看一下传入字段,调用原创 2022-06-29 22:38:56 · 894 阅读 · 0 评论 -
ROW_NUMBER()、RANK()、DENSE_RANK区别
ROW_NUMBER()、RANK()、DENSE_RANK区别ROW_NUMBER():排序,不会有重复的排序数值。对于相等的两个数字,排序序号不一致DENSE_RANK():排序,可有重复值。对于相等的两个数字,排序序号一致RANK():排序,可有重复值。对于相等的两个数字,排序序号一致,但是总数会减少如果窗口中over()无排序字段,那么结果如何?数值排序序号111121如果窗口中over()无排序字段,使用的是row_number()排序,结果如何原创 2022-06-29 22:26:48 · 6230 阅读 · 0 评论 -
HIVE SQL编写MR流程,以及JOIN、GROUP BY、DISTINCT的底层执行原理
HIVE SQL编写MR流程,以及JOIN、GROUP BY、DISTINCT的底层执行原理内容目录HIVE SQL编写MR流程,以及JOIN、GROUP BY、DISTINCT的底层执行原理一、编译MR流程二、HIVE SQL 转为 MR 具体原理1. JOIN2. GROUP BY3. DISTINCT一、编译MR流程HIVE SQL编译成MR任务是在COMPILER阶段完成的。大致可以分为6个步骤:词法、语法解析:Antlr 定义 SQL 的语法规则,完成 SQL 词法,语法解析,将 SQL原创 2022-05-30 07:00:00 · 1672 阅读 · 0 评论 -
HIVE SQL 底层执行逻辑
HIVE SQL 底层执行逻辑内容目录HIVE SQL 底层执行逻辑一、HIVE五大组件二、执行过程hive可以通过访问HDFS等,通过MR引擎(或者更换的Spark、Tez等)执行查询逻辑,一个hive sql会被解译为若干个mr流程,那么是怎么执行的?一、HIVE五大组件在hive中,有很重要的五个组件UI用户界面,也就是hive提供给用户的可视化工具DRIVER驱动程序,十分关键的一部分COMPLIER编译器。负责将HIVE SQL翻译成可执行的执行计划MET原创 2022-05-29 20:00:32 · 906 阅读 · 0 评论 -
位运算符在SQL中的使用场景
SQL中位运算符的使用场景内容目录SQL中位运算符的使用场景一、位运算符1.“&” 按位取余2.“|” 按位取或3.“^” 按位取异或二、用法1.判断奇偶数2.根据不同的数字计算位运算符作为计算机的底层逻辑,在每个语言中都有相关计算,但是怎么用用在哪却使用的很少一、位运算符1.“&” 按位取余A & B:A和B按位取与只有两个位置全为1,取与才为1,否则为02.“|” 按位取或A & B:A和B按位取或只有两个位置一个为1,取或就为1,否则为0原创 2022-05-21 20:01:06 · 579 阅读 · 0 评论 -
SQL高频面试题:求最大连续登录天数,间隔n天内都可以算做连续登录
SQL高频面试题:求最大连续登录天数,间隔n天内都可以算做连续登录连续问题的解决思路,通过等差数列,在之前讲解过SQL解决标准连续问题(等差方法),如果题目改变,变成了如果是间隔两天,都算是连续登录,问题怎么解决?id dt1 2022-05-011 2022-05-021 2022-05-041 2022-05-07比如有上述数据,得到id=1的连续登录天数为4天,2022-05-01到2022-05-04怎么解决?除了等差方法求解,求得两次等差的方法,还可以按照这种原创 2022-05-10 07:00:00 · 1884 阅读 · 0 评论 -
Hive自定义UDF,继承GenericUDF类,如何处理传入的参数类型是否合理
Hive自定义UDF,继承GenericUDF类内容目录Hive自定义UDF,继承GenericUDF类一、自定义UDF的步骤:二、实现UDF三、总代码四、测试四、总结实现两个int类型计算,返回百分比itp(1,2) – > return 50%一、自定义UDF的步骤:自定义类继承GenericUDFpublic class IntToPrecent extends GenericUDF{}实现三个方法:initialize() evaluate() getDisp原创 2022-05-09 07:00:00 · 2638 阅读 · 0 评论 -
生产环境下源数据字段粒度变更,下游怎么处理
真实生产坏境下,源数据字段变更,下游应该怎么做今天源数据字段有个变更上线,变更的内容是将数据质量的监控告警从规则检测粒度变成了一个job粒度有关DQC,数据质量控制。owner可以在一张表上创建一个dqc job,对应一个dqc_id,一个dqc_id下可以有多个监控项,就比如一张表上可以配置多个监控项一个意思,之前的检测告警规则是:一次检测动作发生告警,就会通知owner一次,有时候一张表可能多个监控项都会告警,比如假期双休等,表的数据流增加是正常的行为,那么这样一个规则触碰一次告警发送肯定会造成一原创 2022-05-08 07:00:00 · 456 阅读 · 0 评论 -
牛客SQL34: 牛客直播各科目同时在线人数(最大值问题)
牛客SQL34: 牛客直播各科目同时在线人数(最大值问题)内容目录牛客SQL34: 牛客直播各科目同时在线人数(最大值问题)一、描述二、思路解析三、代码四、问题思考一、描述牛客某页面推出了数据分析系列直播课程介绍。用户可以选择报名任意一场或多场直播课。已知课程表course_tb如下(其中course_id代表课程编号,course_name表示课程名称,course_datetime代表上课时间):course_idcourse_namecourse_datetime1P原创 2022-05-06 08:24:26 · 1714 阅读 · 1 评论 -
SQL解决最多同时在线人数问题(同时视频观看人数,同时浏览人数,同时等车人数)
SQL解决最多同时在线人数问题(同时视频观看人数,同时浏览人数,同时等车人数)今天拿到一个需求,要统计不同时间段的视频同时观看人数,举个例子,比如某个视频,video_id为9432870,统计出这个视频在10:00 - 12:00 同时观看人数最多为201人,12:00 - 14:00 同时观看人数最多为100人。这个需求我刚接到的时候是很蒙圈的,不知道该怎么下手,我脑子第一反应就是,取并集?但是也不知道怎么取啊。问了公司的大佬,他告诉我让我想象成一个瞬时问题,就是求得某个时间点的同时在线人数,我恍然原创 2022-05-05 09:12:29 · 3804 阅读 · 2 评论 -
hive中常用的日期函数
日期的转换1. 格式转换:date_format() ‘2022-04-15’ -> ‘20220415’select date_format('2022-04-15', 'yyyyMMdd')2. 时间戳和日期转换:from_unixtime, unix_timestampselect unix_timestamp('2022-04-15')select from_unixtime(1649980800, 'yyyyMMdd HH:mm:ss')3. 标准时间:to_dat原创 2022-05-04 07:00:00 · 2595 阅读 · 1 评论 -
SQL常见面试提:解决连续问题(CSDN签到领金币、连续登录天数等问题)
SQL解决连续问题(连续登录天数等问题)目录内容SQL解决连续问题(连续登录天数等问题)一、问题描述二、小试牛刀步骤1:按照日期排序步骤2:按照零头进行分组,再次排序(其实这里不用排序,直接得到队伍个数,哪个最大就行)代码:三、问题升级连续登录天数问题我们可以看作是一个排队的问题,就是把连续登录的一组当作是一个队伍,这个队伍有着共同的领队,如果中断,则去往另一个队伍,这个队伍也有一个同样的领队一、问题描述怎么理解呢?看个栗子:比如一组数据2022-04-132022-04-142022-04原创 2022-05-03 13:06:42 · 747 阅读 · 0 评论 -
数据库检测数据一致性时的哈希值不一致的原因
检测数据一致性时的哈希值不一致的原因内容目录检测数据一致性时的哈希值不一致的原因一、问题介绍二、哈希值不同的原因有什么三、问题排查四、日常小技巧今天在做一个数据需求的时候,大概要把几张有字段重复的数据表,并且是同一粒度的,合并到一张表里逻辑处理结束之后,在做数据一致性检验的时候,checksum的结果有些出入一、问题介绍总共有28个字段,checksum的哈希结果26个都是一样的,但是却有两个不一样,这个结果就很奇怪,如果说有一些重复数据造成了数据增长,那么行数是怎么一样的呢?如果逻辑有问题,那么原创 2022-03-31 08:00:00 · 3206 阅读 · 0 评论 -
记录一次Spark SQL的map类型报错
记录一次Spark SQL的map类型报错今天在做一个需求的时候,提交代码测试运行总是在一个任务节点挂掉,报错信息如下:SparkSQLCLIDriver: Error in query: Cannot have map type columns in DataFrame which calls set operations(intersect, except, etc.), but the type of column label is map<string,string>;revie原创 2022-03-26 08:00:00 · 1093 阅读 · 0 评论 -
Hive优化:Explain执行计划应该怎么看?
Hive优化:Explain执行计划内容目录Hive优化:Explain执行计划一:Explain执行计划二:Explain的语法三:Explain的用法四、图示Explain执行计划一:Explain执行计划想要做好hive优化,你可以启用一些hive配置,压缩文件等等,但是羊毛出在羊身上,硬件配置好了,写了一个无敌菜sql,任凭你的配置再好,也不能顶得住sql的毁灭打击啊所以就要了解一下sql的执行计划了,所谓sql执行计划,就是描绘出了这段sql的运行情况,有多少mr,有几个阶段,每个阶段干了原创 2022-03-23 21:15:26 · 4477 阅读 · 1 评论 -
数仓回刷历史数据--hive设置动态分区,并向动态分区内刷入历史数据
数仓回刷历史数据–hive设置动态分区,并向动态分区内刷入历史数据内容目录数仓回刷历史数据--hive设置动态分区,并向动态分区内刷入历史数据一、问题介绍二、问题解决思路1 . 解决复杂逻辑任务2. 数据一致性3. 数据分区问题三、必备知识1. checksum验证一致性2. hive动态分区四、实际操作一、问题介绍今天发现一张表在今年开始有一个字段就没有数据了,没有办法只能是去重新写下逻辑重新刷一下数据。首先介绍一下这个表,是一张全量表,每天数据在3G左右,有多个上游任务,同时也有多个下游任务。所原创 2022-03-24 08:00:00 · 3760 阅读 · 0 评论 -
hive中判断一个字符串是否包含另一个子串的四种方法,sql中也可用
hive中判断一个字符串是否包含另一个子串的四种方法如果你有一个数据需求,需要从一个字段中,判断是否有一个字符串,你该怎么做一、方法1:like和rlike最能想到的方法,用like或者rlikeselect "i want to touch fish" like("%fish%");那么rlike和like有什么区别呢,简而言之,rlike不用一些花里胡哨的,直接匹配就可以select "i want to touch fish" rlike("%fish%");如果换成这样原创 2022-03-22 08:00:00 · 19286 阅读 · 0 评论 -
hive中nvl()方法的使用,并记录一次报错信息
Argument type mismatch ‘map’: The first and seconds arguments of function NLV should have the same type, but they are different: “map<string,int>” and “map<string,string>”一、报错解决当使用hive执行一段sql的时候,出现了这样一段报错,查看了详细的代码,定位到了错误的代码行,nvl(l6.label,map原创 2022-03-21 21:15:38 · 5181 阅读 · 0 评论 -
全量hive表中对于天级别任务的信息除了使用where还怎么提取然后连接到其他表上
全量hive表中对于天级别任务的信息除了使用where还怎么提取然后连接到其他表上一、需求说明对于需求猛地一听有些云里雾里,其实是什么呢?对于一个天级别的项目,每天都会执行一次,用的是同一个项目id,但是会产生不同的history_id,如果我想找到这一个项目今天所有的数据并且关联到其他的表中怎么办,如果直接将项目id作为关联键,又不能实现想要的结果,因为有很多的项目id在表中,同理另一张要join的表里也有许多多项目id存在。类似于:item_id date item_id date原创 2022-03-18 16:55:14 · 1958 阅读 · 0 评论 -
hive中如何完成列的数据同步,sql中也可用
内容目录hive中如何完成数据同步,sql中也可用一、需求说明二、思路讲解三、代码实现四、需求思考五、问题再次升级六、问题终极升级hive中如何完成数据同步,sql中也可用一、需求说明如果有一张表,里面有两列数据,比如name scoretom 100tom tomtom现在要把数据完成同步,就是当一行有数据的时候,把同一个姓名的后面都加上数据,就变成了name scoretom 100tom 100tom 100tom 100二、思路讲解之前学习过join,原创 2022-03-17 18:53:36 · 2085 阅读 · 0 评论 -
hive的几种排序比较
内容目录hive的几种排序准备数据一、order by二、sort by三、distribute by四、cluster byhive的几种排序准备数据1、创建一个sort.txt文件,输入内容tom,chinese,100tom,math,90tom,english,95tom,history,88tom,chirst,98jery,chinese,90jery,math,92jery,english,95jery,history,90jery,chirst,89may,chi原创 2022-03-17 00:14:28 · 860 阅读 · 0 评论 -
hive严格模式下禁止笛卡尔积,公司小伙伴分分钟解决
笛卡尔积但是在hive的严格模式下,是不允许笛卡尔积的操作的,因为在大数据领域笛卡尔积的存在会产生很大的数据量暴增,对于集群的伤害很大。但是如果在严格模式下必须要使用到笛卡尔积怎么办?比如表A中有一条数据,是jn1表的班主任,表A中只有一个字段,现在要把这条记录加入到jn1中,那么该怎么做呢?非严格模式下非严格模式下就很容易操作了select * from jn1,scri;jn1.name jn1.id scri.logtom 1 i am your teacher! Be Car..原创 2022-03-08 21:38:37 · 3118 阅读 · 0 评论 -
hive的几种join到底有何区别
hive中,几种join的区别数据:tom,1jey,2lilly,7lilly,8tom,1lilly,3may,4bob,5以上两个为数据,没有什么意义,全是为了检测join的使用看一下两张表,其实可以看出来,在name一行有重复的,也有不重复的,在id一行1表完全包含2表left joinleft join会把左边的表所有数据列出来,当左边表有而右边表没有的时候,就会用null代替select *from jn1left join jn2on jn1.name原创 2022-03-08 21:27:25 · 3668 阅读 · 0 评论 -
Hive如何解析复杂的json字符串嵌套结构
内容目录Hive解析json字符串一、json格式二、Hive解析jsonHive解析json字符串json类似于python的字典,类似于key-value格式,但是可以实现嵌套的数据结构一、json格式json简单格式:{ "name":"Tom", "age":20, "sex":"male"}上面是简单的json格式,还可以有复杂的嵌套格式{ "name":"Tom", "age":20, "sex":"male", "friend":["Jerry",原创 2022-03-01 15:03:41 · 3993 阅读 · 1 评论 -
高级管理人员信息系统和数据仓库以及外部数据/非结构化数据与数据仓库
内容目录高级管理人员信息系统和数据仓库以及外部数据/非结构化数据与数据仓库一、高级管理人员信息系统和数据仓库二、外部数据/非结构化数据与数据仓库高级管理人员信息系统和数据仓库以及外部数据/非结构化数据与数据仓库一、高级管理人员信息系统和数据仓库EIS-高级管理人员信息系统-计算机饿最有效形式之一。EIS处理,处于帮助高级管理人员制定决策的目的而设计的。比较典型的用途:趋势分析和发现关键比例指示器度量和跟踪向下探察分析问题监控竞争分析向下探察数据是指从一个汇总数据开始,将该汇总数据逐次原创 2022-02-28 17:24:01 · 999 阅读 · 0 评论 -
大数据如何完整的进行数据探察
内容目录如何进行数据探察一、数据探察内容1. 模型信息:2. 字段分类:3. 字段名:4. 字段类型:5. 字段含义:6. 字段数值:7. 取值说明:8. 数据量:9. 去重后的数据量:10. 无数据统计:11. 非空值占比:12. sample1、sample2:13. 待确定问题:二、数据探察过程操作首先1、2、3、4、5点是毋庸置疑的,数据表的基础信息第6点一般在建表中的表描述都有说明,若没有说明,可以在字段数据量的统计中自行思考第7点:第8点:数据量问题第9点:去重后的数据量第10点:空值统计,这种原创 2022-02-28 17:18:48 · 3749 阅读 · 0 评论 -
在失败中寻找答案:如何利用开窗取每组中的前N个,分组和开窗的区别
内容目录如何利用开窗取每组中的前N个,分组和开窗的区别1.找出每个同学最高的分数2..找出每个同学前两高的分数3.找出每个同学前两高的分数的平均数4.总结①开窗和分组的区别②取每组中的前N个如何利用开窗取每组中的前N个,分组和开窗的区别准备数据tom,109tom,107tom,105jery,211jery,209jery,213may,128may,131may,123创建表create table if not exists info( name string,原创 2022-02-22 23:11:19 · 1096 阅读 · 0 评论