- 博客(45)
- 收藏
- 关注
原创 漏斗分析需求开发
用户沿着这个路径上的各个步骤,不断走向业务目标;路径上的各个步骤,人数通常是会逐步递减,形如一个漏斗;把这种分析形象地称呼为:漏斗模型分析;步骤3: 将搜索结果中的商品添加到了购物车。比如,分析师定义了一个业务路径:淘宝购物。比如,分析师定义了一个业务路径:淘宝秒杀。步骤2: 点击了广告落地页中的促销商品。步骤2: 点击了一个搜索结果中的商品。步骤3: 订阅了这个商品的秒杀通知。分析师(报表提需求方)定义了一种。步骤1: 搜索(搜索词为:手机)步骤1: 点击了秒杀运营位广告。漏斗模型概念,是用来。
2024-12-28 16:34:55
253
原创 数仓(数据质量)
数据质量的高低代表了该数据满足数据消费者期望的程度,这种程度基于他们对数据的使用预期,只有达到数据的使用预期才能给予管理层正确的决策参考。数据质量管理作为数据仓库的一个重要模块,主要可以分为数据的健康标准量化、监控和保障。数据的健康性确保数据质量,支持有效分析和决策,关键要点包括,数据的准确性、完整性、一致性、时效性、可靠性、安全性、可维护性,数据健康的高低满足消费者的期望程度。
2024-12-28 16:33:45
415
原创 运行spark的脚本出现报错File hdfs://bigdata01:9820/spark/jars/mysql-connector-java-8.0.26.jar does not exist.
这个时候需要把需要的jar包上传到你的HDFS上指定的路径。这个JAR文件,具体就是你的HDFS上缺少这个jar包,这个时候上传完成之后再去执行,任务就能执行了。这个报错的原因是在执行任务时找不到。
2024-12-11 10:22:52
181
原创 Flink自定义数据源
SourceFunction:非并行数据源(并行度只能=1) --接口RichSourceFunction:多功能非并行数据源(并行度只能=1) --类ParallelSourceFunction:并行数据源(并行度能够>=1) --接口RichParallelSourceFunction:多功能并行数据源(并行度能够>=1) --类 【建议使用的】Rich 字样代表富有,在编程中,富有代表可以调用的方法很多,功能很全的意思。通过ParallelSourceFunction创建可并行Source。
2024-12-08 22:20:05
702
原创 Flink的架构体系
比如1个TM是一个JVM进程,如果有6个Slot,那么这6个Slot平分这一个JVM进程的资源,但是因为在同一个进程内,所以线程之间共享TCP连接、内存数据等,效率更高(Slot之间交流方便)。一个Task有多少个Subtask取决于这个Task的并行度,也就是,每一个Subtask就是当前Task任务并行的一个线程。一个 wordCount 是一个 job,每一个 job 根据算子,切成多个任务 Task ,而每一个 taks 都是并行执行的,有多少个并行度,就启动多少个子任务。
2024-12-08 14:34:29
1042
原创 flink的安装配置(详细版本)
conda deactivate 退出 base环境Flink支持多种安装模式。local(本地)——本地模式standalone——独立模式,Flink自带集群,开发测试环境使用standaloneHA—独立集群高可用模式,Flink自带集群,开发测试环境使用yarn——计算资源统一由Hadoop YARN管理,生产环境测试。
2024-12-05 12:04:20
853
原创 Spark连接mysql py4j.protocol.Py4JJavaError: An error occurred while calling o67.load.报错,(解决方案)
https://cowtransfer.com/s/11ac6fc1393743 点击链接查看 [ mysql-connector-java-8.0.26.jar ] ,或访问奶牛快传 cowtransfer.com 输入传输口令 yzoht4 查看;有的jar包因为版本不兼容会出现问题。下面这个是我使用的jar包。
2024-12-05 08:56:47
536
原创 Spark运行YARN脚本报错 Failed to get main class in JAR with err( 解决方案)
我把jar包放上去之后再运行就好了,下面是我这个jar包的下载连接。这个错误我找了半天然后发现是要执行脚本的文件里缺少了一个jar包。提取码:jcnlvp。
2024-12-03 19:12:54
553
原创 spark创建hive表时缺少jar包导致报错 (详细解决方案)
而 org.apache.hadoop.hive.serde2.JsonSerDe 类,对应的jar包是/opt/installs/hive/lib/hive-serde-3.1.2.jar,/opt/installs/hive/lib/hive-common-3.1.2.jar。建表时,使用org.apache.hive.hcatalog.data.JsonSerDe ,这个类对应的jar是 hive-hcatalog-core-3.1.2.jar。这个命令在 spark里的sbin 里。
2024-12-02 20:34:47
1140
原创 Flink核心概念详解:(面试必问)
侧道输出流的作用是把流中的数据根据特定的条件或业务规则,将数据分流到不同的路径上。用途:1,数据分拣 2,迟到数据的处理Flink里有三种类型的窗口,大致可以分为两类,CountWindow,TimeWindowCountWindow :按照指定的数据条数生成一个Window,与时间无关。TimeWindow:按照时间生成Window。会话窗口:设置一个会话超时时间间隔即可,如十分钟,那么表示:如果十分钟没有数据到来,就计算上一个窗口的数据。滑动窗口:每隔一分钟,统计前一分钟的数据。
2024-12-01 22:54:10
671
原创 Flink 滑动窗口详细解释及案例(非常全面,建议收藏慢慢看)
流是连续的,无界的(对于这个问题,肯定是无法回答的,为何?因为,统计是一种对固定数据进行计算的动作。因为流的数据是源源不断的,无法满足固定数据的要求(因为不知道何时结束)那么,对于这个问题,我们就可以解答了。因为这个问题确定了数据的边界,从无界的流数据中,取出了一部分有边界的数据子集合进行计算。描述完整就是:每隔1分钟,统计这1分钟内通过汽车的数量。窗口长度是1分钟,时间间隔是1分钟,所以这样的窗口就是滚动窗口。同样是需求,改为:每隔1分钟,统计前面2分钟内通过的车辆数。
2024-11-25 20:16:57
1103
原创 Flink (Windows Function 窗口函数)
输入类型是输入流中的元素类型,AggregateFunction有一个add方法可以将一个输入元素添加到一个累加器中。该接口还具有创建初始累加器(createAccumulator方法)、将两个累加器合并到一个累加器(merge方法)以及从累加器中提取输出(类型为OUT)的方法。指在窗口触发的时候才会对窗口内的所有数据进行一次计算(等窗口的数据到齐,才开始进行聚合计算,可实现对窗口内的数据进行排序等需求)l 增量函数:窗口保存一份中间数据,每流入一个新元素,新元素与中间数据两两合一,生成新的中间数据。
2024-11-25 20:08:05
714
原创 “Kafka面试攻略:核心问题与高效回答”
2,acks=1:生产者向leader发送消息给leader,leader拿到数据后应答之后挂掉了还没来得及同步给follower,但是生产者接到应答后觉得已经发送成功了,这个leader挂掉后会重新选举一个leader,这个时候leader向生产者要数据,但是生产者觉得已经发送成功了,就不会给新的leader发数据,导致数据的丢失。因为Kafka本身是分布式集群,可以采用分区技术,并行度高,读写数据采用稀疏索引,可以快速定位要消费的数据,顺写磁盘,页缓存+零拷贝技术。2,如果是下游的数据处理不及时;
2024-11-20 19:44:07
786
原创 Spark应用提交流程详解(面试必问)
驱动进程:先启动,会调用SparkContext来实现自身功能功能:申请资源启动Executor进程,解析代码构建Task、调度分配Task、监控Task运行。产生:一个Job由多个Stage构成,每个Stage都会转换成为一个 TaskSet【Task集合】集合,每个TaskSet中可以包含多个Task。功能:负责运行Driver分配的Task分区,每个Task使用1Core CPU来运行,可以将Task的数据缓存在内存中。
2024-11-20 19:38:45
853
原创 mysql如何批量删除海量数据
由于要求此表中的数据只保留当天的数据,所以每当在凌晨的某一时刻当其他程序处理完其中的数据后要删除该表中昨天以及以前的数据,使用delete删除表中的上百万条记录时,MySQL删除速度非常缓慢,每一万条记录需要大概4分钟左右,这样删除所有无用数据要达到八个小时以上,这是难以接受的。的时候根据不同的场景使用不同的方法,比如说删除表中部分数据、删除表的结构、删除所有记录并重置自增ID、批量删除大量数据等,可以使用delete、truncate、drop等语句。2、再重命名原始表,并给新表命名为原始表的原始表名;
2024-11-17 17:55:51
1477
原创 Flume和kafka的整合
接着创建一个topic ,名字叫做 kafka-flume,或者直接使用以前的five 主题。启动一个消息生产者,向topic中发送消息,启动flume,接收消息。
2024-11-12 20:39:42
759
原创 Kafka-Eagle 监控 (保姆级安装教学)
Kafka-Eagle 的安装依赖于 MySQL,MySQL 主要用来存储可视化展示的数据。# 修改数据库连接:&serverTimezone=GMT 时区一定要写,否则报405错误!# 127.0.0.1 = localhost hosts文件中定义的。出现下面的命令说明已经启动成功了,然后就能去访问web界面。注意:修改之后在启动 Kafka 之前要分发之其他节点。新建一个数据库叫做ke跟你下面修改的配置要一样。启动kafka:kf.sh start。xsync.sh 是我自己写的脚本。
2024-11-11 20:30:53
1401
原创 kafka夺命连环三十问(16-22)
groupld对五十取模,看最后结果是哪个分区节点,假如是1分区,那么1分区的协调器就是本次消费者组的老大,消费者向该协调器注册,协调器从中随机选择一个消费者作为本次消费的leader,然后让leader制作计划,哪个消费者消费哪个分区。再结合offset,完全就可以定位到某个主题、某个分区的某个leader副本的active日志文件的某个位置。delete它会删除所有过期的数据,如果segment中既有过期数据也有未过期数据,kafka会保留未过期的数据,删除过期的部分,这样可以保证数据的完整性。
2024-11-11 19:29:07
639
原创 kafka面试夺命连环三十问(上篇)
另外一种情况是我们把ack设置为1,生产者发送数据给leader,leader保存成功,应答完毕,此时生产者就i以为数据发送成功了,但此时leader挂掉了,但是还没来得及同步给follower,follower此时变成了leader,此时lerader向生产者要数据,生产者不会再发,因为它应答完之后生产者觉得它已经发过了,所有不会给新的leader再发一次,这样数据就丢失了。这还不是最安全的,如果分区副本设置为1,只有一个leader,这个效果跟ack等于一的效果是一样的,仍然有丢数的风险。
2024-11-09 16:38:07
773
原创 kafka 快速入门,安装部署及命令操作 (超详细版)
因为 Zookeeper 集群当中记录着 Kafka 集群相关信息,Zookeeper 集群一旦先停止, Kafka 集群就没有办法再获取停止进程的信息,只能手动杀死 Kafka 进程了。#kafka 运行日志(数据)存放的路径,路径不需要提前创建,kafka 自动帮你创建,可以。kafka中 2.12 是scala语言的版本,3.0.0是kafka版本。echo " --------启动 $i Kafka-------"echo " --------停止 $i Kafka-------"
2024-11-07 19:14:48
1359
原创 SQL 专项练习题(合集)
2)表字段:专利号(patent_id)、专利名称(patent_name)、专利类型(patent_type)、申请时间。(aplly_date)、授权时间(authorize_date)、申请人(apply_users)3)说明:同一个专利,可以有1到多个申请人,多人之间按分号隔开。4)请写出hive查询语句,各类型专利top 10申请人,以及对应的专利申请数。问题: 现有用户登录记录表,请查询出用户连续三天登录的所有数据记录。1)表名:t_patent_detail (专利明细表)
2024-11-07 18:44:51
585
原创 sparkSQL的UDF,最常用的regeister方式自定义函数和udf注册方式定义UDF函数 (详细讲解)
使用最常用的regeister方式自定义函数最常用的方式,这种方式编写的函数,既能用于SQL中,也能用于DSL中# 编写一个普通的函数,用于写逻辑return list1[0] + "斤/" + list1[1] + "cm"
2024-11-06 20:12:44
1443
原创 spark (算子 ) groupBykey+Map 和 reduceBykey 的区别
executor --> spark的app应用在运行时,会产生两个进程,一个Driver,一类executor(执行spark中的job任务的)- groupByKey没有Map端聚合的操作,只做分组,必须等分区结束才能实现,最终map需要做整体聚合。- reduceByKey直接分组聚合的性能要高于先做groupByKey再做聚合的方式。- reduceByKey是有Map端聚合操作,先分区内部聚合,再做分区间的聚合。Combiner --> 运行在map端的Reduce。
2024-11-06 19:21:39
573
原创 spark (RDD的五大特性)面试题
d. 可选的,对于KV结构的RDD,在经过Shuffle时,可以干预分区规则,默认是Hash分区。e. 可选的,Spark分配Task时会优先本地计算,尽量将Task分配到数据所在的节点。c. 对每个RDD都会保留与其他RDD之间的依赖关系:血脉机制。b. 对RDD转换处理本质上是对RDD所有分区的并行转换处理。a. 每个RDD都可以由多个分区构成。RDD的五大特性分别是什么?
2024-11-04 20:21:12
113
原创 Spark中的宽窄依赖-宽窄巷子
窄依赖父RDD的一个分区的数据只给了子RDD的一个分区 【不用经过Shuffle一对一或者多对一不经过Shuffle,性能相对较快, 但无法实现全局分区、排序、分组等一个Stage内部的计算都是窄依赖的过程,全部在内存中 完成。宽依赖父RDD的一个分区的数据给了子RDD的多个分区【需要调用Shuffle的分区器来实现】一对多,必须经过Shuffle,性能相对较慢,可以实现全 局分区、排序、分组等Spark的job中按照宽依赖来划分Stage本质:只是一种标记,标记两个RDD之间的依赖关系。
2024-11-03 21:58:56
507
原创 大数据工具 flume 的安装配置与使用 (详细版)
解压命令:tar -zxvf apache-flume-1.9.0-bin.tar.gz -C /opt/installs/flume是没有运行结束时间的,它一直监听某个Ip的端口,有消息就处理,没消息,就等着,反正不可能运行结束。即将演示一个场景:给服务器上的一个端口发送消息,消息经过内存,打印到控制台上。重命名:mv apache-flume-1.9.0-bin/ flume。先定义agent的名字,再定义agent中三大组件的名字。进入后创建 avro-memory-log.conf。
2024-11-03 11:43:55
2043
原创 spark面试题:groupByKey+map和reduceByKey都能实现分布式分组聚合,有什么区别?
groupByKey没有Map端聚合的操作,只做分组,必须等分区结束才能实现,最终map需要做整体聚合。- reduceByKey直接分组聚合的性能要高于先做groupByKey再做聚合的方式。- reduceByKey是有Map端聚合操作,先分区内部聚合,再做分区间的聚合。
2024-11-02 23:27:32
231
原创 spark 热门面试题 (算子)
1,哪些是触发算子2,哪些是转换算子3,哪些算子能够触发shuffle过程coalesce(根据情况) join( fullOuterJoin / leftOuterJoin / rightOuterJoin)触发算子和转换算子的功能以及作用。
2024-11-02 23:25:34
571
原创 redis应用过程中出现的热门问题 (缓存穿透,缓存雪崩 ,缓存击穿)详解
1,用户访问一个key值,在redis中不存在,先去数据库查询一圈,发现没有查找到,将这个空值也放入到redis缓存中,下一次再有人访问这个数据,直接返回null.缺点:假如将来这个key值在数据库中有数据了,用户会访问不到,解决方案就是redis给这样的key值加过期时间,以及后台再上架某些新的产品的时候,可以去redis中查找一圈,假如有这个数据,删除该key即可。2,使用布隆过滤器布隆过滤器其实就是一块内存区域,本质就是一个数组,数组中只有0和1.
2024-11-01 10:02:21
542
原创 DataX 的安装配置和使用 (详细版)
"jdbc:mysql://bigdata01:3306/sqoop" 这个是连接你的数据库 sqoop是数据库的名子。"path": "/user/hive/warehouse/yhdb.db/par3/*", 这个是你hdfs文件的路径。2、解压 tar -zxvf datax.tar.gz -C /opt/installs。1,切换盘符到你的datax cd /opt/installs/datax/job。3,开始写json 还是在你的datax/job 文件夹里创建json文件。
2024-10-31 14:47:04
1600
原创 python 文件操作
模式描述r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。wb以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。
2024-10-31 12:18:10
238
原创 HTTP和HTTPS 的作用和应用场景 (python 爬虫简单入门)
POST请求参数在请求体当中,消息长度没有限制而且以隐式的方式进行发送,通常用来向HTTP服务器提交量比较大的数据(比如请求中包含许多参数或者文件上传操作等),请求的参数包含在“Content-Type”消息头里,指明该消息体的媒体类型和编码,GET请求参数显示,都显示在浏览器网址上,HTTP服务器根据该请求所包含URL中的参数来产生响应内容,即“Get”请求的参数是URL的一部分。400~499:客户端的请求有错误,常用404(服务器无法找到被请求的页面)、403(服务器拒绝访问,权限不够)。
2024-10-31 12:11:32
800
原创 python 爬虫0基础入门 (爬虫基础知识)
通用网络爬虫 是 捜索引擎抓取系统(Baidu、Google、Yahoo,bing,360,esou,sougou,soso等)的重要组成部分。网络爬虫(又被称为网页蜘蛛网络机器人)就是模拟客户端一种按照一定的规则,自动地发送网络请求,接收请求响应、抓取互联网信息的程序。微博:微报告 https://data.weibo.com/今日头条 https://www.toutiao.com/只要是浏览器能做的事情,原则上,爬虫都能够做。而我们需要学习的网络爬虫,就是聚焦爬虫。
2024-10-31 11:56:23
737
原创 蚂蚁数据 SQL 真实面试题
2,这时候我们就需要判断每个用户的逾期天数是否小于所有配置的逾期天数,如果是则记为1,这时候会出现一个用户对应多个1,我们要取对应配置逾期天数最小的那一条,怎么办?1,看到多张表,先进行JOIN,但是一眼看去好像只能用逾期天数进行关联,可以又无法直接关联,那么就笛卡尔积(考虑到配置表很小)3,按照uid进行分组,配置逾期天数进行排序,对标志位进行求和,最后取开窗结果为1的行记录即可。
2024-10-31 10:34:54
751
原创 java.io.FileNotFoundException: Could not locate Hadoop executable: (详细解决方案)
这个错误 就是缺少winutils.exe 所以报这个错误,把它放到你的hadoop的bin目录下问题就解决了。我们要先去hadoop的bin目录下去看看里面是否有 winutils.exe。
2024-10-30 10:11:42
549
原创 [/ide/createExecutorJobV3], remoteMessage=[Default Or Available Resour 阿里云 sql 执行报错 (解决办法)
出现这个说明你的Dataworks资源组可能有问题,一般默认的是有一个资源组,你可能没有配好。在Dataworks里写查询sql时报下面的这个错误时。如果没有资源组的话,运行sql的时候就会报错!需要去看一下资源组里有没有资源。
2024-10-13 17:13:06
227
原创 Maximum was set to 100 partitions per node, number of dynamic partitions on th is node: 101 报错,详解
当你sql 运行时报上面的错时,说明动态分区数超过了设置的最大限制,需要修改最大分区数。在你的sql里运行下面两个语句。
2024-09-24 19:18:19
261
原创 (使用IDEA打jar包)出现 Unknown lifecycle phase “‘-Dmaven.test.skip=true‘“.
1,在窗口输出这个命令 mvn -U clean package -pl mongodbreader -am assembly:assembly '-Dmaven.test.skip=true' 出现下面这个报错。这个是jar包打完之后会进行测试是测试的时候报的错,既然测试的时候报错,就不测了输入下面这段命令 mvn -U clean package -pl mongodbreader -am。
2024-09-12 20:17:02
362
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人