- 博客(610)
- 资源 (9)
- 收藏
- 关注
原创 大白话实战Seata
每个微服务连的都是自己的数据库,如果我们做一个购买业务,我要做的就是创建一个订单,并且把这个商品的库存扣了,然后去账户扣减余额,所以这个购买业务会调用三个微服务。上面是一段jdbc完成事务的代码,第一步是从数据源里获取连接,这个连接就是连向了某个数据库,第二步给这个连接设置非自动提交,也就是进入手动提交模式,接下来写我们的业务逻辑,写完后调用提交方法,如果业务执行期间出现异常,可以统一回滚,通过这段代码发现,我们以前的事务是在一条连接里面做的所有事情,它才可以一起提交和一起回滚,这个是我们本地事务的根源。
2025-02-22 16:36:06
776
原创 大白话实战Gateway
虽然SpringCloud里面内置了非常多的断言规则,但是它也不能囊括我们业务的所有规则,这个时候我们可以自己写一个断言工厂,通过配置的方式使用起来。假设我们有个需求,只有vip的用户才能转到必应去搜索,那怎么判断vip呢,我希望它自己从请求参数中拿到user并且user=aaa,它才是vip。q=haha?} };} };import org。
2025-02-20 23:29:55
1573
原创 大白话实战Sentinel
Sentinel是SpringCloudAlibaba提供的用来做服务保护的框架,而服务保护的常见手段就是限流和熔断降级。
2025-02-18 21:05:42
1150
原创 大白话实战OpenFeign
避免这种问题的最简单的处理方式就是加入限时等待,比如只等待商品服务10s,如果没有超过,自然就返回正确结果,否则就中断调用。可以看出默认是从不进行重试。响应拦截器用的不多,我们就用请求拦截器为例进行测试,我们希望订单服务给商品服务发送请求之前,用请求拦截器给这次请求里面放一个业务扩展字段,比如X-Token,在业务上代表一个一次性令牌,后边的值可以是一个uuid,把这组k-v放到本次请求的请求头上,最后商品服务收到这个请求,就可以从请求头上拿到X-Token的数据,接下来我们来实现这个需求。
2025-02-15 21:48:06
1096
原创 大白话演绎SpringCloud架构进化过程
同理,数据库服务器也可以复制多台副本。以前的架构我们在每一台服务器上部署了商城的完整应用,这样每一处代码的更新都得需要把应用重新打包部署,现在可以把整个应用,按照功能模块进行拆分,把一个大的应用,拆分成一个个小应用,比如商品、订单、支付等等,拆分出的每一个小应用,我们把它称为微服务,每个微服务都可以独立部署,不仅应用可以拆分,数据库也可以,以前商城所有的数据都在一个库里面,并发高的情况,所有增删改查都要经过这个库,可能同样扛不住,进一步拆分,把商品的数据放到商品数据库、订单数据放到订单数据库里,依次类推。
2025-02-07 22:12:08
1297
原创 Spark操作Hive表幂等性探索
旁边的实习生一边敲着键盘一边很不开心的说:做数据开发真麻烦,数据bug排查太繁琐了,我今天数据跑的有问题,等我处理完问题重新跑了代码,发现报表的数据很多重复,准备全部删了重新跑。我:你的数据操作具备幂等性吗?实习生:啥事幂等性?数仓中的表还要考虑幂等性吗?
2023-08-11 15:49:32
1333
原创 SparkSQL性能优化终极篇
随着Spark版本的不断迭代,SparkSQL底层使用了各种优化技术,无论方便性、性能都已经超越了RDD。因此SparkSQL已经是最常用的Spark开发方式,因此,这里把常用的SparkSQL性能优化技术进行汇总。
2023-06-12 13:46:10
2533
2
原创 Spark数据倾斜解决方案六:随机前缀和扩容Join(包含完整案例代码)
该想法的原因:Shuffle的时候把Key的数据可以分到不同的Task里。但是,现在的倾斜的Key非常多,成千上万,所以如果说采样找出倾斜的Key的话,并不是一个非常好的想法。需要考虑当前程序能够使用的Core的数目,扩容的问题是来解决从程序运行不了的问题,从无法运行到能运行的结果。该方案更多的是缓解数据倾斜,而不是彻底避免数据倾斜,而且需要对整个RDD进行扩容,对内存资源要求很高。同时对另外一个正常的RDD进行扩容,将每条数据都扩容成n条数据,扩容出来的每条数据都依次打上一个0~n的前缀。
2023-06-10 13:12:36
1583
原创 Spark数据倾斜解决方案五:对倾斜key采样后单独Join(包含完整案例代码)
对倾斜的Keys采样进行单独的Join操作步骤有点复杂:首先对RDD1进行采样,例如RDD1进行Sample抽样(15%)可以计算出一个结果,其是一个RDD,采样之后进行Map操作,通过reduceBykey操作计数,然后对Key和Value进行置换,通过SortByKey进行排序,再进行Map置换操作,从而找出哪一个Key值倾斜比较严重,对其进行过滤,提取到RDD11中,剩下的提取到RDD12中。避免了占用过多内存。如果倾斜的Key特别多,如50多个倾斜的Key,我们可以一个一个地对Key进行过滤处理。
2023-06-10 12:32:11
1300
原创 带你彻底理解Spark的分区
我:什么是RDD?面试者:RDD是被分区的,由一系列分区组成…我:你怎么理解分区?面试者:…我:Spark中有哪些可以实现分区的方法?分别使用的场景是什么?面试者…我:Spark默认分区数是多少?如何保证一个分区对应一个文件?面试者…Spark分区是将大型数据集划分为较小的数据块,每个数据块称为分区,分区是一个逻辑数据块,对应相应的物理块Block。每个分区都可以在集群中的不同节点上并行处理,这样可以提高Spark的并行性和性能。
2023-05-05 10:53:06
1390
原创 通俗易懂理解RDD看这一篇就够了
今天面试一个大数据开发工程师,spark相关的知识感觉都能懂一点,但是连基础的RDD稍微一问深一点就不知所云,这种情况基本上是无法通过面试的,今天想用通俗的话把RDD说明白。弹性分布式数据集)是Spark中最基本的数据抽象,代表不可变、可分区、可并行计算的集合。RDD允许将计算结构缓存到内存中,这样当后续计算需要这些数据时,就能快速从内存中加载它们,这样不但提高数据的复用性,还提高了数据的计算效率。RDD主要特点包括并行计算自动容错数据本地性调用等。
2023-05-04 18:26:37
3058
原创 repartition和partitionBy的区别
旁边的实习生一脸困惑:我把一个dataset的数据往某个文件夹或hive表中写的时候可以用partitionBy对数据进行分区,可是repartition顾名思义也好像与分区有关,这两个究竟有啥区别?我该如何使用?
2023-05-04 15:26:38
1052
原创 Spark需要的资源调优(Yarn Cluster模式)
Spark应用程序是粗粒度的,也就是说在提交的时候就得规划好需要多少资源,设定了不合适的资源也会影响整体性能。yarn.nodemanager.resource.memory-mb 每个nodemanager分配的内存,也就是该节点上YARN可使用的物理内存总量。官方。
2023-04-01 23:43:46
716
原创 Dataset关联性能优化
如果一大一小两个Dataset进行join,每个woker的内存足够存放小的Dataset,此时最好的处理方式就是将小的Dataset进行广播,有关广播的知识可以参考这篇文章。
2023-03-31 23:45:01
470
原创 广播变量对Spark性能产生的影响
先说一下为什么Spark会引入广播变量?我们在driver端定义了一个变量,如果要在executor端使用,spark会为把这个变量以task的形式给每个executor发送,也就是有多少个task,每个executor中就会有多少个变量,如果该变量是个集合,而且比较大,甚至会导致内存溢出。因此,引入了广播变量来解决这种问题。下面会用实际案例进行详细描述。
2023-03-31 17:25:50
510
原创 collect大RDD性能优化
众所周知,collect算子会把所有数据拉到driver端,如果数据量太大,直接会造成内存溢出。但是该算子在很多实际场景中会经常用到,这个时候就需要采取一定地方优化措施了。
2023-03-31 15:14:18
686
2
原创 Scala中如何优雅的处理Null
前言如果在scala代码还在使用ids!=null,可能会被有的人嘲笑,都什么年代了,竟然还有这样的写法,NullPointerException见少了吧?不过,据统计:Spark 源代码使用了 821 次 Option 关键字,但它也直接在像if (ids != null)。Spark 采用混合方式,大部分情况下使用 Option,但个别时候出于性能(这里主要是为了给使用这返回提示信息)原因才使用了null。一个很好的习惯是当有方法返回值可能为null的时候,使用Option来代替。什么是Op
2021-08-28 20:44:08
4161
1
原创 Python 连续数据离散化最通俗的理解与操作
前言一些数据挖掘算法,特别是某些分类算法,如ID3算法、Apriori算法等,要求数据是分类属性形式。这样,常常需要将连续属性变换成分类属性,即连续属性离散化。离散化是干啥连续属性离散化就是在数据的取值范围内设定若干个离散的划分点,将取值范围划分为一些离散化的区间,最后用不同的符号或整数值代表落在每个子区间中的数据值。所以,离散化涉及两个子任务:确定分类数以及如何将连续属性值映射到这些分类值。常用的离散化方法常用的离散化方法有等宽法、等频法和(一维)聚类。(1)等宽法将属性的值域分成具有相同宽
2021-01-05 18:26:40
11465
1
原创 python 下采样和上采样
前言由于工作数据量较大,训练模型很少直接单机python,一般都采用SparkML,最近把SparkML的工作使用python简单的写了一下,先写个上下采样,最终目的是为了让正负样本达到均衡(有人问:正负样本必须是1:1吗?1:1效果就一定最好吗?答:不一定)数据准备共20条数据,正样本1共有5条,负样本0共有15条。基础知识准备如何获取dataframe的行数pandas.DataFrame.shape 返回数据帧的形状df.shape[0] 返回行数de.shape[1] 返
2020-10-28 16:23:27
10185
2
原创 Hadoop面向行和面向列格式详解
前言说到HDFS上面存储数据的格式,一般会想到面向行存储的Avro、SequenceFile(现在较少用);面向列存储的Parquet、ORC等,那么在存储的时候如何选择呢?面向行存储格式(以Avro和SequenceFile为例)Avro基本概念Avro是一个独立于编程语言的数据序列化系统。引入的原因:解决Writable类型缺乏语言的可移植性。Avro数据文件主要是面向跨语言使...
2020-01-17 11:10:54
1553
原创 Hive压缩存储(以Parquet为例)
前言前面说了,HDFS上的数据在生产环境中一定是以压缩格式存储的,那么在Hive中如何使勇Parquet格式存储数据呢?测试数据在本地服务器上面vim test.txt1,zs2,ls3,ww4,zl由于我们一般接到的数据都是gzip压缩的文件,这里就将文件压缩为gzipgzip -c test.txt > .test.gz错误的方式创建parquet的hive表...
2020-01-09 10:22:46
2263
2
原创 HDFS文件的压缩
前言新搭建的集群,需要进行各种测试,于是让一个同事导入一些测试数据,大约1.4T左右。我进行了一个简单的hive测试//故意增加shuffleSELECT DISTINCT(COUNT id) FROM test_table;谁知道…就这么一个简单的SQL,半个小时过去后,仍然没有出结果追查原因原来同事从ftp拉取过来的数据是gzip格式的,他直接如到Hive表中…,而gzip格式的...
2020-01-04 18:06:11
8306
1
原创 Pearson相关系数和Spearman相关系数的区别
前言相关系数是用以反映变量之间的相关关系程度的统计指标。其取值范围是[-1,1],当取值为0时表示不相关,取值为[-1,0)表示负相关,取值为(0,-1],表示负相关。目前常用的两种相关性系数为皮尔森相关系数(Pearson)和斯皮尔曼等级相关系数(Spearman)简介皮尔森相关系数评估两个连续变量之间的线性关系。其中:-1 ≤ p ≤ 1p接近0代表无相关性p接近1或-1......
2019-08-29 14:31:55
72032
10
原创 MapReduce过程详解
MapReduce是一种云计算的核心计算模式,是一种分布式运算技术,也是简化的分布式并行编程模式,主要用于大规模并行程序并行问题。MapReduce的主要思想:自动将一个大的计算(程序)拆分成Map(映射)和Reduce(化简)的方式。流程图如下:数据被分割后通过Map函数将数据映射成不同的区块,分配给计算集群进行处理,以达到分布运算的效果,再通过Reduce函数将结果进行汇...
2018-05-16 11:54:47
3435
原创 LiteLLM快速入门
LiteLLM 是一个开源库,为您提供单一、统一的接口,通过 OpenAI 格式调用 100 多种大语言模型(LLM),包括 OpenAI、Anthropic、Vertex AI、Bedrock 等。使用相同的 completion() 接口调用任何提供商 — 无需为每个 API 重新学习无论使用哪种提供商或模型,输出格式始终保持一致通过 路由器 (Router) 实现跨多个部署的内置重试/回退逻辑可自托管的 LLM 网关 (代理),支持虚拟密钥、成本跟踪和管理 UI。
2026-04-24 10:05:02
253
原创 快速入门 openai agents sdk
我们创建两个专家智能体,并用 handoff_description 告诉“前台”他们是干什么的。name="历史专家",handoff_description="专门负责回答所有历史相关问题。",instructions="你是一位历史专家,回答要清晰简洁。",name="数学专家",handoff_description="专门负责解决所有数学问题,并逐步解释过程。",instructions="你是一位数学专家,解释问题要一步一步来,并给出演算示例。",
2026-04-23 11:01:52
495
原创 一文搞清楚 markdown chunk 拆分方式
在构建问答系统、聊天机器人或向量数据库时,通常需要将长文档切分成小块(chunks),再进行嵌入(embedding)和存储。但不能随便切!如果把一个完整段落或上下文相关的句子强行切断,会丢失语义。而 Markdown 文件有天然结构:通过 #、## 等标题组织内容。所以,理想的拆分方式是尊重其标题层级,让每个分块保持内部语义完整。先按标题结构拆分 → 用 MarkdownHeaderTextSplitter。
2026-04-22 11:08:04
418
原创 RAG 评估与优化
如何为 LangChain RAG 系统创建自定义评估指标import re"""学习如何构建用于评估 LangChain RAG 的自定义指标 - 教程"""# 初始化一个轻量级的句子嵌入模型"""衡量答案在多大程度上超出了上下文范围而产生幻觉。Args:answer: RAG 系统生成的答案。contexts: 用于生成答案的检索到的上下文列表。Returns:幻觉分数,范围在 [0, 1] 之间。1.0 表示无幻觉。"""# 将答案拆分为独立的陈述句。
2026-04-18 11:33:23
457
原创 高级 RAG 技术教程
学习如何在本综合教程中使用 LangChain 实现高级 RAG 技术。逐步掌握多查询搜索、父子分块、重排序策略以及融合技术,以达到生产级别的准确度。由于词汇不匹配或歧义,单一查询往往会遗漏相关信息。多查询检索会针对同一个问题生成多个视角,以提高召回率,并找到单一查询可能遗漏的文档。多查询实现逐步教程查询生成:大语言模型创建用户问题的多个版本。并行检索:每个查询变体都在向量存储中进行搜索。结果聚合:合并并去除所有查询结果的重复项。分数融合:对匹配多个查询的文档进行智能排序。在运行此多查询实现之前,请
2026-04-16 23:22:39
385
原创 10分钟掌握git规范操作流程
Git 只是一个工具,规范才是核心。请大家严格遵守分支命名和提交信息规范,这会让我们的协作效率提升一倍。开发过程中难免遇到意外,请按照标准方式处理,不要暴力操作。千万不要删除历史记录(除非你确定没人拉取),而是应该使用。将本地分支推送到远程仓库(Gitee/GitHub)。代码写了一半,突然要修个紧急 Bug,不想提交半成品。在开始工作前,确保你的本地主分支是最新的。当多人修改了同一个文件的同一行代码时发生。基于最新的主分支,创建属于你的功能分支。开发完成后,将文件添加到暂存区并提交。
2026-04-14 15:06:33
378
原创 ImportError: Unable to import required dependencies: numpy
别死守旧版本: 如果你还在用 Python 3.6 或 3.7(根据当前 2026 年的时间点,甚至可能是 3.10 或 3.11),你遇到 ImportError 是很正常的,因为根据这个 NEP 29 规则,主流库已经不再为你编译二进制包了。报错的根源: 你遇到的 numpy 导入错误,很可能是因为你的 Python 环境太老,安装了最新的库(这些库根据规则已经放弃了对旧 Python 的支持),导致二进制不兼容。
2026-04-14 09:37:20
140
原创 如何创建自定义Agent Skills
现在openclaw非常火爆,我们可以通过各大SkillHub市场下载公开的各种Skills,但是对于很多时候,我们需要自己定义Skills,才能更好的为让小龙虾帮我们做我们自己的工作。Skills 可以简单到几行指令,也可以复杂到包含可执行代码的多文件包。
2026-04-09 13:23:37
438
原创 如何为你的 Agent 添加 Skills 支持
本文是针对在 AI Agent 或开发工具中添加 Agent Skills 支持的指南。本指南将引导你完成如何在 AI Agent 或开发工具中添加 Agent Skills 支持的全过程。它涵盖了从始至终的完整生命周期:发现 Skills、告知模型、将内容加载到上下文中,以及随时间保持内容的有效性。无论你的 Agent 架构如何,其核心集成逻辑都是相同的。先决条件:你需要熟悉,该规范定义了 SKILL.md 文件格式、Frontmatter 字段以及目录约定。
2026-04-09 11:21:25
416
原创 Agent Skills 官方规范
Agent Skills(代理技能)是一种轻量级的开源格式,旨在通过特定的专业知识和工作流来扩展 AI 代理的能力。从本质上讲,一个 Skill(技能) 就是一个包含 SKILL.md 文件的文件夹。该文件包含元数据(至少包含 name 名称 和 description 描述)以及指导代理如何执行特定任务的指令。Skills 还可以打包脚本、模板和参考资料。
2026-04-09 10:10:45
756
原创 通俗易懂理解回归和时间序列的区别
回到你的问题:“回归模型是不是无法感知到时序引起的变化?如果你只用“价格、政策”做回归:是的,它完全感知不到。它会忽略掉市场的自然增长和季节性波动,预测结果会非常离谱。如果你加入了“历史销量”做特征:它可以感知到一部分。它能学会“惯性”和“季节”,但它处理“误差规律”的能力依然不如专业的时序模型。
2026-03-30 14:16:07
400
翻译 Forecasting at Scale(Prophet算法全面讲解)
预测是一项常见的数据科学任务,能够帮助组织进行产能规划、目标设定以及异常检测。尽管预测至关重要,但在生成可靠且高质量的预测结果方面仍面临诸多严峻挑战——尤其是当时间序列种类繁多,而具备时间序列建模专业知识的分析师却相对稀缺时。为应对这些挑战,本文提出了一种面向“大规模”场景的实用预测方法,该方法将可配置的模型与“人在回路”(analyst-in-the-loop)的性能分析相结合。我们设计了一种模块化回归模型,其参数具有可解释性,便于拥有领域知识的分析师根据对时间序列的理解进行直观调整。
2026-03-26 15:40:17
73
原创 保姆级论文查找指南|国内外免费+权威渠道汇总
其实不管是国内还是国外,论文查找的核心就是 “先免费、再权威”:在校同学:用好校园网,解锁所有付费数据库。校外同学:优先用免费公益平台,配合文献传递,基本能找到所有需要的论文。这篇指南整理了所有常用渠道,不用再一个个找链接、试权限。也欢迎转发给身边有需要的同学,一起避开论文查找的坑~
2026-03-26 09:28:53
1293
原创 快速理解vLLM命令行工具serve
起步命令: 对于大多数单卡用户,只需关注 --model, --gpu-memory-utilization, --dtype, --max-model-len。显存不足: 优先检查 --quantization 是否使用了量化模型,或调整 --gpu-memory-utilization 和 --max-model-len。高并发: 开启 --enable-prefix-caching 和 --enable-chunked-prefill,并适当调大 --max-num-seqs。
2026-03-25 16:04:08
548
原创 大白话快速入门ms-swift
现在大模型非常火,很多小伙伴都想快速把大模型用起来,然后还可以快速进行微调,但是搜了很多文章发现要么是很多深度学习相关的概念,要么是跟着流程一步一步操作也无法实现微调,甚至根据一些微调框架的官网也会出现各式各样的问题,对于官网出现的各种高深的名词完全无法理解,最终甚至放弃,如果你也是这类人,那么你非常适合阅读本博客。本博客就讲解当前很火很简单的一个微调框架ms-swift。想象你要开一家“智能餐厅”。大模型:就像是只会做文字料理(写文章、聊天、写代码)的厨师。
2026-03-19 13:06:59
711
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅