- 博客(40)
- 收藏
- 关注
原创 数据仓数据仓库建模的意义
位于周围每张表都是维度表,包括Date(日期),Customer(顾客),Product(产品),Location(地区)等,这些维度表就组成了每个订单发生时所处的环境,即何人、何时、在何地下单了何种产品。数据仓库之父Bill Inmon提出的建模方法是从全企业的高度,用实体关系(Entity Relationship,ER)模型来描述企业业务,并用规范化的方式表示出来,在范式理论上符合3NF。可以概括为一个个不可拆分的行为事件,例如电商交易中的下单,取消订单,付款,退单等,都是业务过程。
2024-12-03 20:46:45
598
原创 数仓项目常见问题解答
在spark-on-yarn环境下关联,启动metastore和threat服务,关联过程中可能会出现在spark中创建好的表在hdfs上查找不到,在本地被查到,需要修改hive里面的hive-sie.xml和spark中的hive-site.xml文件,缺包问题jar目录下缺少spark版本对应的hive-serde的jar包和hive-common的jar包在读取json数据时会失败。textfile:纯文本文件存储格式,不压缩,也是Hive的默认存储格式,磁盘开销大,数据解析开销大。
2024-12-03 20:33:36
1115
原创 Flink常见面试题
基于本地集合的source(Collection-based-source)基于文件的source(File-based-source)基于网络套接字(socketTextStream)SourceFunction:非并行数据源(并行度只能=1) --接口RichSourceFunction:多功能非并行数据源(并行度只能=1) --类ParallelSourceFunction:并行数据源(并行度能够>=1) --接口。
2024-12-01 21:29:15
1631
原创 Flink双流Join
需要注意的是,在滚动窗口 [6,7] 中,由于绿色流中不存在要与橘色流中元素 6、7 相关联的元素,因此该窗口不会输出任何内容。需要注意的是,一个元素可能会落在不同的窗口中,因此会在不同窗口中发生关联,例如,绿色流中的0元素。当在滑动窗口上进行 Join 时,所有有相同 Key 并且位于同一滑动窗口中的两条流的元素两两组合进行关联,并最终传递到 JoinFunction 进行处理。2)窗口中数据的打印是需要触发的,没有触发的数据,窗口内是不会进行计算的,所以记得输入触发的数据。
2024-11-29 09:00:58
1611
原创 Flink-State状态
一个简单的例子是对一个时间窗口内输入流的某个整数字段求和,那么当算子子任务接收到新元素时,会获取已经存储在状态中的数值,然后将当前输入加到状态上,并将状态数据更新。因此,具有相同key的所有数据都会访问相同的状态。有状态的计算是流处理框架要实现的重要功能,因为稍复杂的流处理场景都需要记录状态(State),然后在新流入数据的基础上不断更新状态。两者的区别:Managed State是由Flink管理的,Flink帮忙存储、恢复和优化,Raw State是开发者自己管理的,需要自己序列化。
2024-11-27 19:37:04
955
原创 Flink必会点(二)
每隔1分钟,统计前面2分钟内通过的车辆数对于这个需求我们可以看出,窗口长度是2分钟,每隔1分钟统计一次,窗口长度和时间间隔不相等,并且是大于关系,就是滑动窗口。滑动距离> 窗口长度,会漏掉数据,比如:每隔5分钟,统计前面1分钟的数据(滑动距离5分钟,窗口长度1分钟,漏掉4分钟的数据)这样的东西,没人用。滑动距离< 窗口长度,会重复处理数据,比如:每隔1分钟,统计前面5分钟的数据(滑动距离1分钟,窗口长度5分钟,重复处理4分钟的数据)窗口长度是1分钟,时间间隔是1分钟,所以这样的窗口就是滚动窗口。
2024-11-25 20:08:47
881
原创 Flink必会点(一)
在flink最常见的创建DataStream方式有四种:l 使用env.fromElements(),这种方式也支持Tuple,自定义对象等复合形式。注意:类型要一致,不一致可以用Object接收,但是使用会报错,比如:env.fromElements("haha", 1);// 各种获取数据的Source// 演示一个错误的Tuple2.of("张三", 18),// 有一个方法,可以直接将数组变为集合 复习一下数组和集合以及一些非常常见的API。
2024-11-25 20:02:40
1216
原创 mysql必会点总结
全字段匹配,最佳左前缀,索引列上不计算,不能使用索引中范围条件右边的列,尽量使用覆盖索引(只访问索引的查询(索引列和查询列一致)),减少select *,使用不等于(!客户端连接层 Connectors,位于MySQL体系架构的最上层,提供与MySQL服务器建立连接的能力,是一些客户端和连接服务,包含本地服socket通信和大多数基于C/S工具实现的类似于tcp/ip的通信。在该层,服务器会解析查询并创建相应的内部解析树,并对其完成相应的优化︰如确定查询表的顺序,是否利用索引等,最后生成相应的执行操作。
2024-11-23 17:22:46
800
原创 Hive必会点总结
UDF:用户自定义函数,user defined function。一对一的输入输出。UDTF:用户自定义表生成函数。user defined table-generate function.一对多的输入输出。UDAF:用户自定义聚合函数。user defined aggregate function,多对一的输入输出比如count sum等。hive的内置函数满足不了所有的业务需求。hive提供很多的模块可以自定义功能,比如:自定义函数、serde、输入输出格式等。
2024-11-23 17:21:44
962
原创 Mysql必备知识总结
全字段匹配,最佳左前缀,索引列上不计算,不能使用索引中范围条件右边的列,尽量使用覆盖索引(只访问索引的查询(索引列和查询列一致)),减少select *,使用不等于(!客户端连接层 Connectors,位于MySQL体系架构的最上层,提供与MySQL服务器建立连接的能力,是一些客户端和连接服务,包含本地服socket通信和大多数基于C/S工具实现的类似于tcp/ip的通信。在该层,服务器会解析查询并创建相应的内部解析树,并对其完成相应的优化︰如确定查询表的顺序,是否利用索引等,最后生成相应的执行操作。
2024-11-23 15:34:18
805
原创 Spark必会点总结
如果是通过读取外部数据textFile创建,如果未指定就是默认分区和2取最小值,如果指定分区了指定的值就为分区数的最小值,具体的分区规则可根据HDFS的分片规则来。spark-submit的作用是:将写好的代码,提交到spark,让spark运行,spark有可能是本地环境,也有可能是集群环境。Spark Core:Spark最核心的模块,可以基于多种语言实现代码类的离线开发 【类似于MR】:Local:一般用于做测试,验证代码逻辑,不是分布式运行,只会启动1个进程来运行所有任务。
2024-11-23 14:37:26
556
原创 Hadoop必备知识总结
NameNode运行时元数据需要存放在内存中,同时在磁盘中备份元数据的fsImage,当元数据有更新或者添加元数据时,修改内存中的元数据会把操作记录追加到edits日志文件中,这里不包括查询操作。1、在这种情况下,其实最耗时的操作就是加载最新的fsimage 到namenode节点的内存中,因为namenode 是整个集群的核心,处理大量的数据,速度必须很快。一般片 = 块的,但是到最后一次的时候,有可能片> 块,但是绝对不能超过块的1.1倍。跟片有关系,有多少个片,就启动多少个map任务。
2024-11-21 09:54:18
1079
原创 StructuredStreaming&Kafka实现实时计算
注:数据为java代码随机生成的一些数据,可以选取自己文件夹里面的数据,另外端口号。主机名,以及topic名称以及生成数据后保存的文件路径需要换成自己的。其他代码均可cv亲测无误,而且代码比较固定可以自己整合成一个模板来写非常方便,另外kafka-producer相关代码已经被注释,需要释放开才可使用。注:端口号,主机名,以及topic名称以及生成数据后保存的文件路径需要换成自己的,其他代码均可cv亲测无误。另外os端指定路径代码已省略,它会走系统默认,不用写即可。可直接运行消费生成者端发送的数据。
2024-11-18 20:34:26
477
原创 python操作kafka报错java.lang.NoClassDefFoundError: Could not initialize class org.apache.spark.sql.kafka
找到如上图所示的jar包选择自己spark和scala所对应的版本(一定要和自己的版本一模一样,不然可能会报NoSuchMethod异常)下载改jar包到自己的jars目录下。然后还需要下载改jars包所依赖的一些jar,滑到页面底部,下载即可:(jsr305不用下载)最后下载spark-streaming的jar包即可,一共需要6个包括上图的4个,spark-sql-kafka的一共和spark-streaming的一个(版本一定要照应哦,有的jar包就不用下载了)。
2024-11-18 20:22:25
497
原创 kafka面试题解答(四)
可以理解为分配的结果带有“粘性的”。即在执行一次新的分配之前, 考虑上一次分配的结果,尽量少的调整分配的变动,可以节省大量的开销。粘性分区是 Kafka 从 0.11.x 版本开始引入这种分配策略,首先会尽量均衡的放置分区 到消费者上面,在出现同一消费者组内消费者出现问题的时候,会尽量保持原有分配的分区不变化。
2024-11-11 19:53:48
832
原创 Kafka面试题(三)
按照topic和partition存储的,topic是逻辑上的概念partition是物理上的概念(实际存在的),每个partition对应一个log文件,该文件中存储的就是Producer生产的数据。log.cleanup.policy = compact 所有数据启用压缩策略,这种策略只适合特殊场景,比如消息的key是用户ID,value是用户的资料,通过这种压缩策略,整个消息集里就保存了所有用户最新的资料。,同样的磁盘,顺序写能到 600M/s,而随机写只有 100K/s。(1)基于时间:默认打开。
2024-11-11 19:31:47
1320
原创 Kafka面试题解答(二)
At Least Once可以保证数据不丢失,但是不能保证数据不重复;At Most Once可以保证数据不重复,但是不能保证数据不丢失。•。
2024-11-09 09:38:46
1336
原创 Kafka面试题解答(一)
kafka可以保证发送消息时在单个分区内的有序性但是有多个分区时顺序会出现乱序的情况,因此只设置一个分区可以防止分区发送时乱序,而在sender线程kafka生产者发送消息未得到应答后后将该消息调整到最后一个队列发送,因此应当队列调整为一个当发送消息得不到应答时继续发送,直至最大重试次数(默认很大但可以自行调整)。一个消费者组中的多个消费者,可以看作一个整体,一个组内的多个消费者是不可能去消费同一个分区的数据的,要不然就消费重复了。消息消费者,向 Kafka broker 取消息的客户端。
2024-11-08 20:48:23
939
原创 如何保证kafka生产者数据可靠性
生产者把数据发送给了Leader,Leader保存成功,应答完毕,此时生产者就以为数据发送成功了,但是此时,Leader挂了,但是Follower 并没有同步数据过来,Follower此时变成了Leader, 此时的Leader就没有Hello这个数据了,数据丢失了。如果分区副本设置为1个(只有一个leader),或者ISR里应答的最小副本数量 ( min.insync.replicas 默认为1)设置为1,和ack=1的效果是一样的,仍然有丢数的风险(leader:0,isr:0)。
2024-11-08 12:16:45
966
原创 Sql面试题二:请查询出用户连续三天登录的所有数据记录
步骤 1 (t:为每个id内的记录生成按dt排序的排名。步骤 2 (t1:计算一个新的字段chajv,其值是dt中的日部分与id(可以扩大一些倍数防止不同月份的重复)和排名值的计算结果。步骤 3 (t2:统计每个id和chajv组合出现的次数,保留那些出现次数大于或等于 3 次的组合。步骤 4 (t3:从t1中筛选出那些chajv值在t2中的记录。最终查询:返回这些记录中的dt列。id INT,dt STRING-- 假设数据是逗号分隔的),t1 as (),t2 as (
2024-11-07 20:40:17
730
原创 Sql面试题(一)求排名top10
需求:1)表名:t_patent_detail (专利明细表)2)表字段:专利号(patent_id)、专利名称(patent_name)、专利类型(patent_type)、申请时间(aplly_date)、授权时间(authorize_date)、申请人(apply_users)3)说明:同一个专利,可以有1到多个申请人,多人之间按分号隔开。本表记录数约1万条。例如:4)请写出hive查询语句,各类型专利top 10申请人,以及对应的专利申请数。
2024-11-07 20:35:10
645
原创 Kafka面试题总结
14、Kafka中Leader挂了,Follower挂了,然后再启动,数据如何同步?15、kafka中初始化的时候Leader选举有一定的规律,如何打破这个规律呢?25、Kafka中的数据在消费过程中,有漏消费和重复消费的情况,怎么办?26、kafka中的数据已经消费过的数据,是否可以再次消费?17、Kafka集群中数据的存储是按照什么方式存储的?22、kafka消费者的消费分区策略有哪些,默认是个?23、kafka中的消费者,他们的偏移量存储在哪里?8、Kafka中如何做到数据唯一,即数据去重?
2024-11-07 11:57:39
411
原创 Kafka 快速入门
分别在 bigdata02 和 bigdata03上修改配置文件/opt/installs/kafka/config/server.properties 中的 broker.id=1、broker.id=2 注:broker.id 不得重复,整个集群中唯一。官方下载地址:http://kafka.apache.org/downloads.html。进入到/opt/installs/kafka3 目录,修改配置文件。先启动 Zookeeper 集群,然后启动 Kafka。
2024-11-06 20:10:33
763
1
原创 mysql如何批量删除海量数据
在My SQL数据库使用中,有的表存储数据量比较大,达到每天三百万条记录左右,此表中建立了三个索引,这些索引都是必须的,其他程序要使用。由于要求此表中的数据只保留当天的数据,所以每当在凌晨的某一时刻当其他程序处理完其中的数据后要删除该表中昨天以及以前的数据,使用delete删除表中的上百万条记录时,MySQL删除速度非常缓慢,每一万条记录需要大概4分钟左右,这样删除所有无用数据要达到八个小时以上,这是难以接受的。2、分多次占用锁,串行化执行,不占有锁的间隙,其他客户端可以工作。
2024-11-06 13:02:31
1288
原创 Spark应用的提交流程
驱动进程:先启动,会调用SparkContext来实现自身功能功能:申请资源启动Executor进程,解析代码构建Task、调度分配Task、监控Task运行。产生:一个Job由多个Stage构成,每个Stage都会转换成为一个 TaskSet【Task集合】集合,每个TaskSet中可以包含多个Task。功能:负责运行Driver分配的Task分区,每个Task使用1Core CPU来运行,可以将Task的数据缓存在内存中。计算进程:后启动,运行在从节点中,使用从节点的CPU和内存。
2024-11-01 16:51:14
416
原创 Spark的容错机制
其他软件为了防止数据丢失都采用了一下这些方案:操作日志:将内存变化操作日志追加记录在一个文件中,下一次读取文件对内存重新操作- NAMENODE:元数据的操作日志记录在edits- MySQL:日志记录binlog副本机制:将数据构建多份冗余副本- HDFS:构建每个数据块的3个副本依赖关系:每份数据保留与其他数据之间的一个转换关系- RDD:保留RDD与其他RDD之间的依赖关系。
2024-11-01 09:44:32
309
原创 FileBeat部署全流程
另一点需要声明的是:根据采集的数据形式不同,形成了由多个模块组成的Beats。Beats是开源数据传输程序集,可以将其作为代理安装在服务器上,将操作数据发送给Elasticsearch,或者通过Logstash,在Kibana中可视化数据之前,在Logstash中进一步处理和增强数据。4.使用压力敏感协议(backpressure-sensitive)来传输数据,在logstash 忙的时候,Filebeat 会减慢读取-传输速度,一旦 logstash 恢复,则 Filebeat 恢复原来的速度。
2024-10-31 20:24:45
1115
原创 spark中的一些重要算子
mapPartitions是转换算子,使用后会返回Rdd因此是有返回值的。它的作用是一个分区一个分区地处理数据,处理完是不需要返回值的。
2024-10-31 12:10:39
333
原创 解决spark-yarn模式下运行py可执行文件报错 java.io.IOException: Cannot run program “python3“: error=2, 没有那个文件或目录
如上图所示是完整的报错信息。这个问题是在spark-yarn模式中安装完pyspark环境后运行一些python的可执行文件出现的。错误信息提示我们其他集群没有找到python3环境,这时我们首先要检查其他集群上面是否有python3环境,或者anaconda,anaconda是可以替代python3的它里面包含了python3。然后检查自己的spark文件是否存在一个硬链接,如果没用可以创建硬链接名为spark指向spark。加入这句话后就不报这个错误了。
2024-10-30 20:16:39
438
原创 解决pycharm使用spark报错PySparkRuntimeError:Java gateway process exited before sending its port number.
如果还有可以打开命令行页面,进入到自己的base环境下输出pyspark看是否能启动成功,启动失败则是pyspark安装有问题,重新安装再次启动即可。进入到环境变量下的系统变量检查查看PATH目录下是否有C:\Windows\System32。没有的话就添加这句话C:\Windows\System32,然后重启pycharm即可解决。
2024-10-29 10:06:30
373
原创 FineBi20道面试题
4.模板页面已经引用数据集ds1的字段内容,后面将ds1名字改成ds2,模板主体内容会自动变成引用ds2。15.有时我们希望将模板发送给别人修改,导出模板时需要附带导出内置数据,导出时其实是作为两个文件存在的。17.finebi可以将finereport制作的报表挂出,并且可以集成到finebi制作的仪表板中。19.在报表安装目录下,%WebReport%\\WEB-INF里面lib存放的是。1.可以用来导出数据库明细的报表是哪个图表。14.以下哪个不属于模板单元格的扩展方向。5.制作多层饼图用哪个图表。
2024-10-13 18:24:34
180
原创 Python中的numpy库的基本使用(一)
主流的有anconda和pycharm,pycharm是JetBrians公司下的一款开发工具使用操作和界面都类似于IEDA等该公司的产品。则代表脚本运行成功我们可以免费使用到2099年,如果点开后报权限不足的问题,应当以管理员身份进入windows下的黑窗口,即cmd后使用crl+shift+enter键进入,然后cd 到脚本所在的位置,使用start+脚本名字命令运行脚本即可解决权限不足问题。NumPy提供了许多高效的方法来操作数据和执行数值计算,并且具有比Python内置列表更高的性能。
2024-09-24 20:14:55
436
原创 kettle mysql导入数据到hdfs报错:Hadoop file output.0 - File name field [null] couldn‘t be found in the input
然后我们重启kettle再次在来南京Hdfs的页面点击测试图一所示的位置连接成功则hdfs就连接成功了。此时在黑窗口执行 hadoop version如果出现以下界面则hadoop环境变量配置成功。此时再运行我们的转换即可。
2024-09-12 20:18:41
352
原创 解决kettle mysql导入到hive的各种报错问题
同时也需要确保kettle对hive的连接也是正常的记得提前打开hiveserver2远程连接服务,出现以下界面几位正常:(注意kettle里面是没有mysql的jar包的要拿到自己的mysql jar包传入到kettle的lib目录下)这个错误大致是在说hive中的某些方法不被支持,这个错误相关信息在博客和其他网站上都非常少,摸索了很久后发现在 hive/conf/.hiverc下加入这样一句话就可以解决该报错。点击左边表输出里面的sql是可以自动生成sql语句来帮我们创建表的。
2024-09-12 19:58:41
717
原创 解决Hive启动报错:org.apache.thrift.transport.TTransportException: Cannot write to null outputStream
在配置好hiveserver2和Metastore两个服务后使用脚本hive-server-manager.sh start启动服务。-- hiveserver2的高可用参数,开启此参数可以提高hiveserver2的启动速度 -->
2024-09-10 20:15:21
3145
原创 Dolphin Scheduler 进阶教程
参数说明后N 年前N 年后N 月前N 月后N 周前N 周后N 天前N 天后N 小时前N 小时后N 分钟前N 分钟在a3任务中。
2024-09-09 20:40:17
709
原创 Redis高级教程(二)
Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。这意味着通常情况下一个请求会遵循以下步骤 :客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应;服务端处理命令,并将结果返回给客户端。
2024-09-07 14:32:06
812
原创 Redis高级教程(一)
如果恢复数据,要将备份文件(dump.rdb)移动到redis安装目录并启动服务即可(默认备份的目录就在redis安装目录下所以备份后重启即可恢复数据。Redis可以通过修改配置文件来设置密码参数,这样在客户端连接redis时就需要密码验证,如此可以让redis服务更安全。以上命令输出的redis安装目录为/opt/installs/redis/src。执行该命令后将会在redis安装目录的src/下创建dump.rdb文件。这样就可以保证设置redis密码后redis服务可以安全使用了。
2024-09-07 11:33:40
512
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人