- 博客(230)
- 收藏
- 关注
原创 [excel]将文本导入到excel数据量变少
二、解决:使用excel打开(WPS没有这个数据这个菜单)选择不检测数据类型,否则日期会更改格式。直接粘贴或者直接往里拖都会变少。
2023-05-25 14:48:32
448
原创 [Flink]第五章DataStream API
DataStream(数据流)本身是Flink中一个用来表示数据集合的类,我们编写的Flink代码其实就是基于这种数据类型的处理,所以这套核心API就以DataStream命名。由于新版本已经实现了流批一体,所以DataSet API将被弃用,官方推荐统一使用DataStream API来处理流数据和批数据。用DataStream上API对数据进行一连串的调用,就叫作数据流的"转换"(transformation)。3、定义基于数据的转换操作(transformation)2、读取数据源(source)
2023-04-17 17:17:08
121
原创 [flink]系统架构
1、任务并行第一条数据在source读取完后,在map()在转换,这时,source可以处理下一条数据。即不同的操作(任务)可以同时处理。但是这样,多条数据同时过来,需要一条一条运行,会需要等待。2、数据并行将一个算子分成多个子任务,这样算子可以进行同时计算。无论在代码中设置,还是在提交应用时增加-p参数,都不是必须的,因此,在没有指定并行度的时候,就会采用配置文件中的集群默认并行度。在开发环境中(idea),没有配置文件,默认并行度就是当前机器CPU的核数。
2023-03-15 17:21:16
365
原创 [hive]所有参数总结--进行中
最好别设置reduce的个数,设置为20则reduce总数为20。默认为-1,系统自动设置为700多个reduce。
2023-03-13 10:58:47
84
原创 [hive]执行计划
Explain呈现的执行计划,由一系列Stage组成,这一系列Stage具有依赖关系,每个Stage对应一个Mapreduce Job,或者一个文件系统的操作(select *、load,这种不走MR)。
2023-03-10 11:28:00
672
原创 [hive]sort by limit和reduce by limit
它走两个MR:第一个MR内每个reduce取topN,第二个MR对所有已经取过topN的reduce进行汇总排序,再整个取topN。在没看这块之前,我一直以为sort by limit只是单纯的在每个reduce中有序,并不能实现全局排序。最好别设置reduce的个数,设置为20则reduce总数为20。order by limit是一个reduce全局topN。但实际上是sort by确实是单个reduce有序。默认为-1,系统自动设置为700多个reduce。只有1个MR的Stage。
2023-03-09 10:29:16
300
原创 [hive]order by优化--未完
查两次,第一次组内排序:sort by + distribute by 取topN。第二次再对分组TopN的数据全局排序:order by。跑了1个小时还是没跑完,通过对任务的观察发现是多个reduce在并行执行没错,但是最后一步的汇总还是一个reduce。点开之后发现那个reduce写着reduce->sort。
2023-03-07 15:43:29
254
原创 [flink]一Flink部署|配置文件|提交作业|部署模式|独立模式部署|yarn模式部署
同样由客户端运行应用程序(需要客户端先跑一遍代码,把应用拆分成作业,比如并行度为2,会拆成两个作业,需要启动两个集群),然后启动集群,作业提交给JobManager,进而分发给TaskManager执行。我们需要先启动一个集群,保持一个会话,在这个会话中通过客户端提交作业(需要客户端先跑一遍代码,把应用拆分成作业,比如并行度为2,会拆成两个作业,然后将作业提交给jobManager)。一个应用启动一个集群。会话模式、单作业模式,都需要客户端先跑一遍代码,把应用拆分成作业,比如并行度为2,会拆成两个作业。
2023-03-07 15:26:17
2082
原创 [flink]报错
Caused by: java.lang.ClassNotFoundException:org.apache.flink.streaming.api.scala.StreamExecutionEnvironment$Caused by: java.lang.ClassNotFoundException: org.apache.commons.compress.compressors.zstandard.ZstdCompressorInputStream
2023-03-06 17:25:06
390
原创 [hive]文件出现000000_0_copy_1
原因:在使用insert into table时,每次会再添加一份文件。 000000_0_copy_1
2023-03-03 16:05:23
555
1
原创 [报错]hive Caused by: java.lang.OutOfMemoryError: Java heap space
hive Caused by: java.lang.OutOfMemoryError: Java heap space
2023-03-01 08:39:37
363
原创 [牛客网] HJ35 蛇形矩阵(写了好久才写出来)
蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。例如,当输入5时,应该输出的三角形为:1 3 6 10 152 5 9 144 8 137 1211
2023-02-27 17:21:42
280
原创 [Flink]介绍 | 核心组成 | flink的角色 | 运行架构【旧】
3)优点:在第一个任务的位置挂掉了,程序重新启动时,不在需要把第一个任务和之前任务进行重新计算,可以直接找到第一个子任务的状态,用它快读恢复输出结果。Flink常见的sink大概有如下几类:写入文件、写入socket、自定义的sink:图中的addSink是自定义的sink,可以将结果写入kafka、mysql、es、hdfs等。形成操作器链的子任务有一定的条件:相同的并行度,在本地进行数据传输,不涉及shuffle过程,满足这样的条件,就可以将两个子任务连到一起,形成一个操作器链。
2023-02-21 16:02:13
707
原创 [数仓]OLTP和OLAP
OLTP:以事务作为数据处理的单位,一般是和MySQL进行交互,可以对数据进行即时更新,系统内的数据总是保持在最新状态。缺点:数据孤岛,比如查询飞机订票,股票交易,各自相互独立。将不同系统的数据都提取到数仓中,对海量数据进行处理。缺点:时效性低(t+1)
2023-02-21 15:41:21
210
原创 [java]单例设计模式
第3步:把对象提供出去,通过定义一个public的静态函数返回该对象。单例设计模式:解决的事一个类只有一个对象的问题。设计模式:解决某一类问题最有效的方式。第2步:在类中创建自身类型的对象。第1步:构造函数私有化。
2023-02-17 16:13:08
112
原创 [scala]偏函数 | 模式匹配 | 样例类 | 隐式转换 | scala和java的关系、函数式编程 | java面向对象编程
scala中的模式匹配类似于java中的swich语法,但是更加强大。模式匹配语法中,采用match关键字声明。每个分支采用case关键字进行声明。当需要匹配时,会从第一个case分支开始,如果匹配成功,那么执行对应的逻辑代码。如果匹配不成功,则继续执行下一个分支进行判断。当所有的case都不匹配,那么会执行case _分支,类似于java中的default语句。当把范围大的数据类型转化给范围小的数据类型时,必须要进行强制类型转换,否则会报错。隐式转换可以让这种情况自动进行类型转换。
2023-02-14 17:24:17
660
原创 [hive]留存率(次日/七日/月)
2022-01-01的次日留存率=2022-02-01登录的人中也在2022-02-02登录的人数/2022-02-01登录的人数。求2021-01-01的次日留存,join后分组是这样的,找到差为1的id再去重就可以了,如果是七日留存,则差为7。使用hql对以下日志进行分析,加工出2021-01-01到2022-02-01期间的次日留存率。
2023-02-08 16:09:27
578
1
原创 [面试题]海量数据内存受限的处理
有一百亿条数据和8G内存,统计top1000的ip 有a、b两个文件,各放50亿个url,每个url64字节,内存限制是4G,让你找出a,b两个文件共同的url
2023-02-07 15:14:43
488
原创 [spark]spark资源分配
(1*4即4个节点共4个executor)*4=16,总cpu为32线程 8/16=1/2。每个executor内存数=该节点可用的总内存数/该节点executor数=16G/1=19G(这里因为executor num实在太小,所以随便选了16)但是一般cpu:内存=1:2-1:4,阿里云封装的时候1CU = 1cpu+4G内存, 即1:4,该值是比较合理的。内存数与线程数不是严格按照1:2,或者1:4,这个需要看一下每个节点的可用资源,具体情况具体计算。这里可以看出来,内存数/线程数=16/4=4。
2023-02-06 17:09:46
3142
原创 [spark]spark的5种join策略(未总结)
https://baijiahao.baidu.com/s?id=1709308473224276897&wfr=spider&for=pc
2023-02-06 15:31:09
125
原创 [spark] spark SQL的AQE
AQE是Spark SQL的一种动态优机制,是Spark3才出现的。总体思想是动态优化和修改物理执行计划,利用执行结束的上游Stage的统计信息(主要是数据量和记录数),来优化下游stage的物理执行计划。AQE有三大特性
2023-02-06 15:25:48
947
原创 [hive]hive count(*)=0但是select *有数据
当设置hive.compute.query.using.stats=true时,hive在执行某些查询时,例如select count(),只利用元数据存储中保存的状态信息返回结果,从而提高了响应速度。这是一个CBO(基于成本的优化)的设置。
2023-02-06 10:44:14
549
原创 [数仓]埋点数据接入
kafka channel 将数据以event(header+body)的形式存储, 这样读的时候,读出来的是event,在kafka channel中设置 parseAsFlume=false则会以正常格式存储,不封装成Event,但是咱们得代码需要header,在拦截器中使用,所以不能这么设置。由于Flume默认会用Linux系统时间作为传输到HDFS的时间,如果数据是23:59:59产生的,消费Flume拉取数据的时候可能是00:00:03,那么这部分数据会被发往第二天的HDFS路径。
2023-02-03 17:16:38
985
原创 [数仓]如何划分维度表还是事实表
事实表一般由维度表的外键和度量值组成,但是一般会有退化维度,避免join太多次。维度表一般是对事实表做描述,每一张维度相当于java中的一个对象。维度表的特征:维度表和事实表相比,行数相对较小:通常
2023-02-03 09:00:14
493
原创 [牛客网]求int型正整数在内存中存储时1的个数
假设输入的值为num,则从大遍历arr[i],num-arr[i]>0这个arr[i]就是我们要的,此时i的位置就是1,即1*2^i=arr[i]先得到2^0-2^31次方的数值,用arr[i] (i>=0;因为求的是1的个数,所以只要求有多少个1就行了。
2023-01-20 10:45:37
157
原创 [牛客网]质数因子
一个数为10,则先求这个数的最小因数:2;之后再求10/2=5的最小因数...记得找到了要break退出,否则循环还会继续。质数为乘法的最小单元,所有整数都可以表示成 质数的乘积 的形式。总是找这个数的最小因数,这个最小因数就是质数。
2023-01-20 10:09:09
145
原创 [hive]数仓分层|用户纬度拉链表|维度建模
针对上述场景可以设计一张地区表,其主键为地区ID,字段为:下单次数,下单金额,支付次数,支付金额等,上述所有指标统一进行计算,并将结果保存在该宽表中,这样就能有效避免数据的重复计算。数据时间漂移:用户手机中存的前端的数据会累积到一定条数再发送到服务器,例如80条,假如用户1-1存了40条就关掉了app,1-2打开了app,这40条的数据就会变成1-2的了。dwd层是对事实表的处理,代表的是业务的最小粒度层,任何数据的记录都可以从这一层获取,为后续的dws和dwt层做准备。用户维度表:维度表。
2023-01-19 16:29:01
1635
原创 [hive]维度模型分类:星型模型,雪花模型,星座模型|范式
z=f(x,y)当给定x,y则能计算出z,当给x,y,n时,也能计算出z,此时z部分函数依赖于z,y,n。比如通过(学号,课程)推出姓名,因为可以直接通过学号退出姓名,所以:姓名部分依赖于(学号,课程)。星型模型中只有一张事实表,以及0张或多张维度表,事实与纬度表通过主键外键相关联,维度之间不存在关联关系,当所有纬度都关联到事实表时,整个图形非常像一种星型的结构,所以称之为“星型模型”。主键为:"学号"+"课名"。"分数”完全依赖于(学号,课名),但是姓名并不完全依赖于(学号,课名),姓名只依赖于学号。
2023-01-19 14:49:38
4209
1
原创 [牛客网]16进制转10进制
十六进制:0~9这十个数字+10-15用A-F表示。0xAA转换成10进制=10*16^0+10*16^1=170。十六进制用0x开头(数字0),2AF5可以用0x2AF5表示。题目来自牛客网,进制转换。二、十六进制转十进制规则。
2023-01-17 16:15:17
1356
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅