![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据存储
文章平均质量分 59
牧码文
只要思想不滑坡,从此不怕bug多
展开
-
【python】pandas模块使用总结
pands在日常数据处理中的使用方法总结了七大类,如果更详细的使用说明和更全面的函数说明可以浏览官网:https://pandas.pydata.org/使用pandas可以大大提高数据处理的效率和准确性,特别是在数据预处理、建模和报表制作等方面。它是数据科学的核心之一,非常值得学习和掌握。它类似于Excel或SQL表格。pandas中的loc和iloc都是用于选取数据的方法,但两者的使用方式、效果和用途有些不同。在使用pandas时,我们通常需要进行的操作包括读取数据、数据清洗、数据分析和数据可视化等。原创 2023-03-15 22:51:45 · 1374 阅读 · 0 评论 -
【Spark】Spark的DataFrame使用
Spark的DataFrame是一种类似于表格的数据结构,可以进行各种数据处理操作。使用DataFrame可以很方便地处理结构化数据(如CSV、JSON、Parquet等格式的数据)。原创 2023-03-07 18:48:31 · 1061 阅读 · 0 评论 -
【Spark】Spark的常用算子
使用给定的函数对 RDD 的元素进行聚合,seqOp 计算在分区中初始值到中间结果的聚合计算,而 combOp 在节点上对中间结果进行聚合。: 返回对输入 RDD 和参数 RDD 执行联合操作的结果,生成一个新的 RDD,不去重。: 返回对输入 RDD 和参数 RDD 执行交集操作的结果,生成一个新的 RDD。: 返回对输入 RDD 和参数 RDD 执行差集操作的结果,生成一个新的 RDD。: 返回对输入 RDD 和参数 RDD 执行笛卡尔积的结果,生成一个新的 RDD。原创 2023-03-07 18:03:45 · 2495 阅读 · 1 评论 -
MyBatis-Plus入门使用小案例
入门的MyBatis-Plus小案例,结合SpringBoot原创 2022-11-06 17:51:15 · 287 阅读 · 0 评论 -
mysql更改自定义存储数据目录
数据表的存储路径在my.ini文件的dataDir配置中basedir为默认安装目录datadir为数据存储目录可以看到在修改之前数据是默认存储在c盘的隐藏目录下的注意:在自定义存储目录之后,因为mysql内有许多配置表,存放在默认的data路径下,如果更改了目录,需要把这些默认的问价copy到新的目录下,否则重启时候会失败,因为加载不了mysql的配置文件表修改之后,重启MySQL,创建数据就检测一下是否更改了目录检查新的目录是否有这条数据修改成功。原创 2022-10-16 00:49:54 · 703 阅读 · 0 评论 -
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 评论 -
Hadoop HDFS 的shell命令
下面介绍几个常用的命令-help如果对于某个命令不熟悉,想要知道具体的用法,可以使用 --help命令查看比如:查看ls的命令使用说明二、上传文件-moveFromLocal:从本地剪切粘贴到 HDFS-copyFromLocal:从本地文件系统中拷贝文件到 HDFS 路径去-put:等同于 copyFromLocal,生产环境更习惯用 put-appendToFile:追加一个文件到已经存在的文件末尾三、下载文件-copyToLocal:从 HDFS 拷贝到本地-get:等同于原创 2022-07-10 07:00:00 · 438 阅读 · 0 评论 -
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 评论 -
数仓重要名词:指标-派生指标的种类(事务性指标、存量型指标、复合型指标)
派生指标的种类派生指标可以分为3类:**事务性指标、存量型指标、复合型指标。**按照其特性不同,有些必须新建原子指标,有些可以在其他类型原子指标的基础上增加修饰词形成派生指标。一、事务性指标是指对业务活动进行衡量的指标。例如新发商品数、重发商品数、新增注册会员数、订单支付金额,这类指标需要维护原子指标及修饰词,在此基础上常见派生指标。二、存量型指标是指对实体对象(如商品、会员)某些状态的统计。例如商品总数、注册会员数。这类指标需要维护原子指标及修饰词,在此基础上创建派生指标,对应事件周期一般为原创 2022-05-16 07:00:00 · 2845 阅读 · 0 评论 -
数仓的一些重要知识,数据域、业务过程、度量、指标、维度、命名规则
内容目录数仓的一些重要知识,数据域、业务过程、度量、指标、维度、命名规则一、规范定义二、指标体系基本原则命名规则数仓的一些重要知识,数据域、业务过程、度量、指标、维度、命名规则一、规范定义规范定义指以维度建模作为里理论基础,构建总线矩阵,划分和定义数据域、业务过程、维度、度量、原子指标、修饰类型、修饰词、时间周期、派生指标专有名词:数据域:指面向业务,讲业务过程或者维度进行抽象的集合。其中,业务过程可以概括位一个个不可拆分的行为事件,在业务过程之下,可以定义指标,维度是指度量的环境,如买家下原创 2022-05-15 11:04:34 · 3716 阅读 · 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 评论 -
记录一次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 评论 -
Redis数据库的遍历
Redis数据库的遍历以hash数据类型为例:典型的键值对,前期通过hmset()方法进行多数据插入,存入到Redis中的结构类似于key:{ key1:value1, key2:value2, key3:value3}使用的是Redis模块中的scan_iter()方法,该方法可以获得Redis库中所有的key值,通过遍历key值可以通过hget得到需要的key*的value值,并且这些value值可以通过筛选条件或者排序条件进行排序或筛选。注意:得到的value值都是String数据类原创 2021-04-10 09:14:39 · 1612 阅读 · 0 评论