- 博客(43)
- 收藏
- 关注
原创 Spark的overwrite问题
比如我们目前有两个分区 20190322 和 20190323 两个分区,现在我们使用 saveAsTable 想覆盖其中一天的分区,结果却是将整个所有分区遮盖了。重建了整个目录,这明显不是我们想要的到的结果。
2024-06-04 23:16:16 251
原创 Elasticsearch写入性能调优
如果业务场景支持将一批数据聚合起来,一次性写入Elasticsarch,那么尽量采用bulk的方式,bulk批量写入的速度远高于一条一条写入大量document的速度。并不是bulk size越大越好,而是根据写入数据量具体来定的,因为越大的bulk size会导致内存压力过大,因此最好一个请求不要发送超过10MB的数据量,以5-10MB为最佳值。
2023-08-04 11:34:07 681
原创 Kafka参数优化
一般情况下,Producer压缩消息,Broker保存消息,Consumer解压缩消息,Broker只是保持消息,不会解压缩处理消息;大于0时,如果消息数据小于batch.size,则继续等待,当数据超过batch.size或者等待时间超过linger.ms,则直接发送数据。增加topic的分区数,将topic的数据尽量均匀的落盘到不同的分区;如果设置的缓冲区不够,当生产消息的速度大于消息发送的速度,缓冲区被写满之后,导致用户线程阻塞;根据当前业务生产消息的能力和客户端发送消息的能力,合理配置。
2023-07-13 21:10:03 259
原创 数据清洗工作
数据清洗是数据分析的重要步骤之一,通过处理和修正不符合预期、不完整或错误的数据来提高数据的质量和准确性。数据清洗包括数据去重、缺失值处理、异常值处理、格式转换等。数据清洗的基本流程包括数据预处理、数据去重、缺失值处理、异常值处理、数据格式转换、归一化和标准化、数据合并和切分等。数据清洗需要根据实际情况选择合适的方法和技术,避免对数据造成过度干扰,提高数据分析的可靠性和效率。
2023-07-13 15:09:42 328
原创 JVM知识点总结
VM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。
2023-07-04 22:51:54 963
原创 JVM的基础常识
1.内存模型堆共享数据,存放我们new的对象。栈线程私有,存放我们的局部变量表、操作数栈、方法出口等信息。方法区(元数据空间)共享数据,存放我们常量、类信息、静态变量。计数器线程私有,记录每个线程的计算位置。2.类加载过程加载–》校验 --》准备 --》解析 --》初始化加载根据查找路径找到对应的class文件,然后导入。校验校验class文件的正确性准备给类中的静态变量分配内存空间解析将常量池中的符号引用转换为直接指向内存地址的直接引
2021-11-02 17:47:01 151
原创 spark操作ES中数据出现的问题
Spark读取Es空字符串问题问题描述:order_tp在Es中存储为空字符串,读取到Spark中会出现各种意想不到的问题。ES中存储格式{ "_index": "dwd_monitor_yuepengfei_test", "_type": "doc", "_id": "15", "_score": 1, "_source": { "chnl_cd": "10", "order_tp": "" }}
2021-10-27 14:20:29 565
原创 kafka的rebalance
rebalance的出现订阅Topic的分区数发生变化简单地说,就是之前 topic 有 10 个分区,现在变成了 20 个,那么多出来的 10 个分区的数据就没人消费了。那么此时就需要进行重平衡,将新增的 10 个分区分给消费组内的消费者进行消费。所以在这个情况下,会发生重平衡。订阅的Topic个数发生变化简单地说,一个 consumer group 如果之前只订阅了 A topic,那么其组内的 consumer 知会消费 A topic 的消息。而如果现在新增订阅了 B topic,那么 k
2021-10-26 22:04:59 1018
原创 Flink状态后端
MemoryStateBackend构造反方MemoryStateBackend(int maxStateSize, boolean asynchronousSnapshots)存储方式State: TaskManager内存checkpoint: JobManager内存容量限制单个state maxStateSize默认5MmaxStateSize <= akka.framesize默认10M总大小不超过JobManager的内存推荐使用场景本地
2021-10-21 10:12:47 342
原创 elasticsearch移除type
设计type的初衷之前es将index、type类比于关系型数据库(例如mysql)中database、table,这么考虑的目的是“方便管理数据之间的关系”。移除type的原因在关系型数据库中table是独立的(独立存储),但es中同一个index中不同type是存储在同一个索引中的(lucene的索引文件),因此不同type中相同名字的字段的定义(mapping)必须一致。不同类型的“记录”存储在同一个index中,会影响lucene的压缩性能。基于index的统计,一个type下的文档分数
2021-10-14 16:27:36 501
原创 Flink的checkpoint怎么内部保证精准消费
1 流计算中流的状态1.1 数据状态首先是流数据状态。在流计算过程中,我们需要处理事件窗口、时间乱序、多流关联等问题。解决这些问题,通常需要对部分流数据进行临时缓存,并在计算完成时再将这些临时缓存清理掉。因此,我们将这些临时保存的部分流数据称为“流数据状态”。1.2 信息状态在流计算过程中,我们会得到一些有用的业务信息,比如时间维度的聚合值、关联图谱的一度关联节点数、CEP 的有限状态机等,这些信息会在后续被继续使用,从而需要将它们保存下来。同时在之后的流计算过程中,这些信息还会被不断地查询和更新。
2021-10-12 16:49:13 579
原创 数仓面试的常见问题
数据面试题总结近源层(ods)存放原始数据,直接加载原始日志、数据,数据保存原貌不做处理仓库整合层明细数据层(dwd)结构与粒度原始表保持一致,对ODS层数据进行清洗(去除空值、脏数据、超过极限范围的数据)服务数据层(dws)以DWD为基础,进行轻度汇总应用层(ads)以DWD为基础,进行轻度汇总1.2 风层的意义**空间换时间:**通过建设多层次的数据模型供用户使用,避免用户直接使用操作型数据,可以更高效的访问数据把复杂问题简
2021-10-10 09:43:48 1233
原创 2. MySQL索引数据结构
1. 关于索引索引是帮助Mysql更加高效获取数据的一种数据结构,索引的使用很简单,但是如果不能理解索引底层的数据结构的话,就谈不上去优化索引了。2. B+树Mysql的索引用的是B+树,他具有这样的几个特点:1、数据都存储在叶子节点中、非叶子节点只存储索引2、叶子节点中包含所有的索引3、每个小节点的范围都在大节点之间4、叶子节点用指针相连,提高访问性能,比如条件是>或者<的查询就可以直接按指针找(Mysql中的B+树叶子节点中的指针是双向指针)B+树的数据结构如图所示,首先非叶子节
2021-09-28 20:47:49 963
原创 布隆过滤器的原理
什么是布隆过滤器本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在”。相比于传统的 List、Set、Map 等数据结构,它更高效、占用空间更少,但是缺点是其返回的结果是概率性的,而不是确切的。实现原理HashMap 的问题讲述布隆过滤器的原理之前,我们先思考一下,通常你判断某个元素是否存在用的是什么?应该蛮多人回答 HashMap 吧,确实可以将值映射到 H
2021-09-28 20:47:07 119
原创 单例双重锁和volatile
单例双重锁public class TestInstance{private volatile static TestInstance instance;public static TestInstance getInstance(){ //1 if(instance == null){ //2 synchronized(TestInstance.class){ //3 if(instance == null){
2021-09-20 16:30:14 93
原创 CPU使用率过高问题定位
1.通过top命令,确定是哪个进程资源消耗严重,假设对应进程PID=1234top2.通过ps命令,确定哪个线程资源消耗严重,假设对应线程TID=12345ps -mp 1234 -o THREAD,tid,time3.将TID转换为16进制,结果3039printf “%x\n” 123454.通过jstack命令查看进程状态jstack 1234 | grep 3039 -A 30...
2021-09-20 16:29:31 289
原创 零拷贝技术
零拷贝技术是指计算机执行操作时,CPU不需要先将数据从某处内存复制到另一个特定区域,这种技术通常用于通过网络传输文件时节省CPU周期和内存带宽
2021-09-12 09:25:12 446
转载 ES写入过程
1. Lucene写操作存在的问题Lucene提供了:增加,更新和删除操作。但是存在如下问题没有并发设计lucene只是一个搜索引擎库,并没有涉及到分布式相关的设计,因此要想使用Lucene来处理海量数据,并利用分布式的能力,就必须在其之上进行分布式的相关设计。非实时将文件写入lucence后并不能立即被检索,需要等待lucene生成一个完整的segment才能被检索数据存储不可靠写入lucene的数据不会立即被持久化到磁盘,如果服务器宕机,那存储在内存中的数据将会丢失
2021-05-10 16:40:52 601
转载 ES master data client三种节点
简述默认情况下,ES集群节点都是混合节点,即在elasticsearch.yml中默认node.master: true和node.data: true。当ES集群规模达到一定程度以后,就需要注意对集群节点进行角色划分。ES集群节点可以划分为三种:主节点、数据节点和客户端节点。这是一种分而治之的思想,也是一种术业专攻的体现。三类节点说明master - 主节点:elasticsearch.yml :node.master: truenode.data: false主要功能
2021-05-10 15:30:25 4075
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人