- 博客(26)
- 收藏
- 关注
原创 【持续更新中】开源贡献记录
但迟迟不review。3.13发邮件讨论FLIP-436,3.19投票,3.22投票通过,4.7终于合入了,跨度达到了两年多,终于完成了。目前:merged 2024.6.14 为了赶1.20 code freeze,半夜2点完成FLIP-436后,起来又发现CI失败了,排查是其他人刚提交的一个commit里的test有bug,很快修复了提了pr。切换到0.235版本后,同样的代码报错了,delete catalog后重新加载却报already异常,可能是个隐藏的bug,已提交了新的pr解决。
2024-07-30 10:28:23
1114
原创 Hive笔记
(1)UDF必须用Java语言编写UDF:作用于单个数据行,且产生一个数据行作为输出。如数学函数、字符串函数UDAF:接受多个输入数据行,且产生一个输出数据行。如count、maxUDTF:作用于单个数据行,且产生多个输出数据行。
2025-12-09 16:03:10
794
原创 压测相关概念
摘要:性能测试的核心指标包括QPS(每秒查询率)、TPS(每秒事务数)、RT(响应时间)和并发数。QPS衡量服务器处理能力,而TPS关注完整事务;RT是系统响应速度的关键指标;并发数反映系统负载能力。这些指标相互关联:QPS=并发数/平均RT,并发数=QPS×平均RT。测试目的是发现性能瓶颈,评估系统在极限条件下的稳定性,其中吞吐量受CPU消耗、I/O速度等因素影响。这些指标共同构成了评估系统性能的重要参数体系。
2025-11-20 15:28:21
134
原创 StarRocks笔记
StarRocks是一款新一代云原生MPP数据库,具有极速分析能力与统一架构特点。其核心优势包括:1)采用MPP执行引擎实现性能线性扩展,支持向量化执行与SQL标准统一;2)提供存算一体和存算分离两种架构,满足不同场景需求;3)支持多种数据模型(主键、明细、聚合、更新)和丰富的数据类型;4)具备完整的导入导出生态,包括StreamLoad、BrokerLoad等;5)通过物化视图(同步/异步)、索引等机制优化查询性能;6)支持资源组管理实现多租户隔离。StarRocks的简洁架构(FE/BE)和高扩展性使其
2025-10-24 17:33:10
1276
原创 ByteBuddy实战笔记
摘要:本文介绍了Java字节码增强框架ByteBuddy的核心功能,包括动态生成类、方法拦截和属性修改等技术。主要内容涵盖:1)动态类的三种生成方式(subclass/rebase/redefine)及其命名策略;2)方法拦截的不同实现形式,包括实例方法、静态方法和构造方法的动态修改;3)使用注解实现参数绑定和委托调用;4)Java Agent的实现方式和Advice内联织入技术。文中详细说明了各种增强场景下的API使用方法,并提供了参数绑定、类型校验等关键配置的注意事项,为Java字节码增强提供了全面的技
2025-10-20 17:02:20
624
原创 AIGC笔记
LLM大语言模型提示工程,使提问更加清晰RAG(Retrival-Augmented Generation检索增强生成),结合信息检索和生成式AI的技术架构,RAG 通过从外部知识库(如文档、数据库)中检索相关信息,并将其作为上下文输入给 LLM(大型语言模型),从而提高回答的准确性,减少幻觉问题微调,可以增强模型能力LangChain开源框架,允许开发人员将LLM与外部的计算和数据源结合起来对比维度通用大模型推理大模型实现模式识别、统计关联。
2025-10-08 10:16:01
996
原创 【算法】力扣top100
本文总结了哈希表和双指针相关的算法题解。哈希表部分包括:两数之和(使用哈希表存储元素和索引)、字母异位词分组(排序后作为哈希键)、最长连续序列(利用哈希表检测序列起点)。双指针部分包括:移动零(快慢指针)、盛水容器(移动短边)、三数之和(排序后双指针)、接雨水(双指针记录左右最大高度)。滑动窗口部分包括:无重复字符子串(哈希集合维护窗口)、字母异位词查找(固定长度窗口+哈希表统计)。各题均提供Java实现代码,展示了不同场景下哈希表和双指针的高效应用。
2025-09-04 17:35:59
940
原创 【算法】关键思路
本文总结了常见算法与数据结构的关键知识点:时间复杂度分析(O(1)/O(N))、二维数组转一维索引公式、滑动窗口技巧、二分查找实现及优化、双指针分类及应用场景、二叉树特性与遍历方式(DFS/BFS)、递归与回溯法框架(含去重技巧)、贪心法思想、动态规划五部曲(重点讲解01背包问题)。内容涵盖基础概念、实现模板和典型应用,为算法学习提供系统性参考。
2025-09-04 17:30:19
1014
原创 LSM详解
LSM是通过将磁盘的随机写改为顺序写来提高写的性能,核心思想是把数据的添加或修改放到内存中,当内存中数据达到一定size后,然后dump(也就是变成了顺序写)到磁盘中。LSM中有MemTable、ImmutableMemTable、SSTable等几个概念。
2025-08-21 15:54:49
1059
原创 何为“零拷贝”
内核态(Kernal Mode):内核有特别的权利,它能与设备控制器通讯, 控制着用户区域进程的运行状态。保护系统应用用户态(User Mode):非特权区域, 在该区域执行的代码就不能直接访问硬件设备。用户进程所在区域。DMA 直接内存存取(Direct Memory Access):是一种允许外围设备(硬件子系统)直接访问系统主内存的机制。接管了数据读写的工作,不需要 CPU 再参与 I/O 中断的处理,从而减轻了 CPU 的负担。
2025-08-05 13:26:35
876
原创 Impala集群优化历程
在讲解我们的优化措施前,首先简单介绍一下Impala。Impala 是一个采用MPP(大规模并行处理)架构的分布式并行计算数据库引擎,是业界主流的大数据批量分析工具特点基于内存计算,运行在由C++编写的后端环境,效率很高支持列式存储如Parquet兼容HiveSQL,用户易上手体系架构Impala 的核心组件是 Impala Daemon,具体在机器上就是 impalad 进程(1)Impala Daemon 的核心功能读写数据文件。
2025-06-27 10:30:29
777
原创 一张图说清楚Flink水印和Lateness
当Watermark大于窗口结束时间时,会触发窗口内的元素进行计算并缓存起来,随着Watermark增长,在Watermark 窗口结束时间 + Lateness时清空缓存。Flink使用窗口与水印处理乱序问题,使用Latenss处理延迟问题,二者混合使用可以满足很多复杂场景的需求。简单地说就是,当Watermark在红色区域时,窗口内的元素会计算。真传一句话,假言万卷书。
2024-09-29 15:29:07
207
原创 源码贡献时的git流程
4、新建本地分支修改源码后,先rebase变基到源分支master,然后提交本地分支到fork分支(不要用merge,否则可能会多一个merge记录造成pr难以被commit)3、每次保证源分支是最新的,git checkout master, git pull。使用如下方式,我在做flink、presto源码贡献时就是这样处理的,非常实用。2、git remote add my fork分支。1、git clone 源分支。
2024-09-29 15:24:59
288
原创 聊聊源码贡献这件大事
对于一个热爱技术的开发人员来说,能读懂被业界广泛使用的开源框架里的代码,甚至回馈社区,将是一件莫大的荣耀。下面简单聊聊这件大事。
2024-09-29 15:21:32
910
原创 Flink Sink定制开发
在flink自带的kafka sink实现里,只支持写到固定topic,而我们的kafka2kafka日志处理逻辑要求消息要按照ds字段值写入到对应topic,topic名前缀相同,后面跟ds字段值,需要进行改造。flink自带的hdfs sink只支持将接收到的消息整体使用UTF-8格式写入到文件,而我们的kafka2hdfs处理逻辑要求只写body字段内容到文件。(1)由源码可知BucketingSink类的setBucketer(Bucketer bucketer)方法确定要写入的文件目录。
2024-08-13 16:26:30
954
原创 Flink kuduSink开发
定义JsonLogidKeyTableSerializationSchema实现TableSerializationSchema接口,对于输入的json数据,使用指定key值提取value值,然后再从一个预先获取的map里找到这个value对应的表名,然后加上必要的前缀与后缀组成impala的表名。核心是如果已传入TableSerializationSchema对象,则通过其serializeTable方法从输入的json数据里提取表名,如果未定义则直接取默认表名。(2)重写open方法。
2024-08-07 10:42:44
389
原创 Flink之对时间的处理
重写processElement(),对每个输入元素注册定时器,但会自动去重重写onTimer(),定时器触发时执行的逻辑根据时间特征的不同,具体如下:处理时间——调用Context.timerService().registerProcessingTimeTimer()注册;onTimer()在系统时间戳达到Timer设定的时间戳时触发。事件时间——调用Context.timerService().registerEventTimeTimer()注册;
2024-08-07 10:38:53
860
原创 Calcite执行计划优化
CBO与RBO并非对立关系,而是基于RBO的拓展CBO = RBO + Cost Model + Model Iteration,通过代价模型,在一定的时间空间范围内通过动态规划算法来获得最终的执行计划claicte的优化原理是,它假定如果一个表达式最优,那它的局部也是最优的。成本最优假设利用了贪心算法的思想,在计算的过程中, 如果一个方案是由几个局部区域组合而成,那么在计算总成本时, 我们只考虑每个局部目前已知的最优方案和成本即可。
2024-07-30 10:37:23
623
原创 聊聊FLINK-25631贡献
从入行做数据库开发,到2018年过渡到大数据开发,可以说我已经与sql朝夕相处了七八年了,经常惊讶于简单的语法就能产生复杂的操作,而且还能根据索引等统计信息自动优化,不禁很想实现自己的sql语法,却不知道这是怎么做到的,繁忙的工作、庞大的语法解析及优化的储备知识让我迟迟难以行动起来,但只要出现契机并敢于把握,这些困难都不算什么。
2024-07-30 10:34:10
378
原创 实战Flink sql语法改造
首先通过调研spark、mysql等流行引擎,如下语法是最合适的,可以看出语法还是比较复杂的,有很多可选的组合,比如接着就是定义语法文件,Flink使用的fmpp模板生成器将模板文件放在flink-sql-parser模块下,文件名是parserImpls.ftl。根据前面讲到的Calcite解析规则,修改文件如下:} )
2024-07-30 10:30:13
478
原创 Paimon笔记
支持高吞吐数据摄入、变更追踪、高效分析的流批数据湖基于LSM提升写入速度并降低写入消耗;基于有序的SortRun裁剪大部分数据以提升查询性能;支持多种merge引擎实现高性能流表打宽。
2024-07-30 10:12:55
1201
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅