- 博客(504)
- 资源 (9)
- 收藏
- 关注

原创 大白话实战Seata
每个微服务连的都是自己的数据库,如果我们做一个购买业务,我要做的就是创建一个订单,并且把这个商品的库存扣了,然后去账户扣减余额,所以这个购买业务会调用三个微服务。上面是一段jdbc完成事务的代码,第一步是从数据源里获取连接,这个连接就是连向了某个数据库,第二步给这个连接设置非自动提交,也就是进入手动提交模式,接下来写我们的业务逻辑,写完后调用提交方法,如果业务执行期间出现异常,可以统一回滚,通过这段代码发现,我们以前的事务是在一条连接里面做的所有事情,它才可以一起提交和一起回滚,这个是我们本地事务的根源。
2025-02-22 16:36:06
666

原创 大白话实战Gateway
虽然SpringCloud里面内置了非常多的断言规则,但是它也不能囊括我们业务的所有规则,这个时候我们可以自己写一个断言工厂,通过配置的方式使用起来。假设我们有个需求,只有vip的用户才能转到必应去搜索,那怎么判断vip呢,我希望它自己从请求参数中拿到user并且user=aaa,它才是vip。q=haha?} };} };import org。
2025-02-20 23:29:55
1339

原创 大白话实战Sentinel
Sentinel是SpringCloudAlibaba提供的用来做服务保护的框架,而服务保护的常见手段就是限流和熔断降级。
2025-02-18 21:05:42
1016

原创 大白话实战OpenFeign
避免这种问题的最简单的处理方式就是加入限时等待,比如只等待商品服务10s,如果没有超过,自然就返回正确结果,否则就中断调用。可以看出默认是从不进行重试。响应拦截器用的不多,我们就用请求拦截器为例进行测试,我们希望订单服务给商品服务发送请求之前,用请求拦截器给这次请求里面放一个业务扩展字段,比如X-Token,在业务上代表一个一次性令牌,后边的值可以是一个uuid,把这组k-v放到本次请求的请求头上,最后商品服务收到这个请求,就可以从请求头上拿到X-Token的数据,接下来我们来实现这个需求。
2025-02-15 21:48:06
888

原创 大白话演绎SpringCloud架构进化过程
同理,数据库服务器也可以复制多台副本。以前的架构我们在每一台服务器上部署了商城的完整应用,这样每一处代码的更新都得需要把应用重新打包部署,现在可以把整个应用,按照功能模块进行拆分,把一个大的应用,拆分成一个个小应用,比如商品、订单、支付等等,拆分出的每一个小应用,我们把它称为微服务,每个微服务都可以独立部署,不仅应用可以拆分,数据库也可以,以前商城所有的数据都在一个库里面,并发高的情况,所有增删改查都要经过这个库,可能同样扛不住,进一步拆分,把商品的数据放到商品数据库、订单数据放到订单数据库里,依次类推。
2025-02-07 22:12:08
1037

原创 Spark操作Hive表幂等性探索
旁边的实习生一边敲着键盘一边很不开心的说:做数据开发真麻烦,数据bug排查太繁琐了,我今天数据跑的有问题,等我处理完问题重新跑了代码,发现报表的数据很多重复,准备全部删了重新跑。我:你的数据操作具备幂等性吗?实习生:啥事幂等性?数仓中的表还要考虑幂等性吗?
2023-08-11 15:49:32
1128

原创 SparkSQL性能优化终极篇
随着Spark版本的不断迭代,SparkSQL底层使用了各种优化技术,无论方便性、性能都已经超越了RDD。因此SparkSQL已经是最常用的Spark开发方式,因此,这里把常用的SparkSQL性能优化技术进行汇总。
2023-06-12 13:46:10
2235
2

原创 Spark数据倾斜解决方案六:随机前缀和扩容Join(包含完整案例代码)
该想法的原因:Shuffle的时候把Key的数据可以分到不同的Task里。但是,现在的倾斜的Key非常多,成千上万,所以如果说采样找出倾斜的Key的话,并不是一个非常好的想法。需要考虑当前程序能够使用的Core的数目,扩容的问题是来解决从程序运行不了的问题,从无法运行到能运行的结果。该方案更多的是缓解数据倾斜,而不是彻底避免数据倾斜,而且需要对整个RDD进行扩容,对内存资源要求很高。同时对另外一个正常的RDD进行扩容,将每条数据都扩容成n条数据,扩容出来的每条数据都依次打上一个0~n的前缀。
2023-06-10 13:12:36
1313

原创 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
1056

原创 带你彻底理解Spark的分区
我:什么是RDD?面试者:RDD是被分区的,由一系列分区组成…我:你怎么理解分区?面试者:…我:Spark中有哪些可以实现分区的方法?分别使用的场景是什么?面试者…我:Spark默认分区数是多少?如何保证一个分区对应一个文件?面试者…Spark分区是将大型数据集划分为较小的数据块,每个数据块称为分区,分区是一个逻辑数据块,对应相应的物理块Block。每个分区都可以在集群中的不同节点上并行处理,这样可以提高Spark的并行性和性能。
2023-05-05 10:53:06
1280

原创 通俗易懂理解RDD看这一篇就够了
今天面试一个大数据开发工程师,spark相关的知识感觉都能懂一点,但是连基础的RDD稍微一问深一点就不知所云,这种情况基本上是无法通过面试的,今天想用通俗的话把RDD说明白。弹性分布式数据集)是Spark中最基本的数据抽象,代表不可变、可分区、可并行计算的集合。RDD允许将计算结构缓存到内存中,这样当后续计算需要这些数据时,就能快速从内存中加载它们,这样不但提高数据的复用性,还提高了数据的计算效率。RDD主要特点包括并行计算自动容错数据本地性调用等。
2023-05-04 18:26:37
2934

原创 repartition和partitionBy的区别
旁边的实习生一脸困惑:我把一个dataset的数据往某个文件夹或hive表中写的时候可以用partitionBy对数据进行分区,可是repartition顾名思义也好像与分区有关,这两个究竟有啥区别?我该如何使用?
2023-05-04 15:26:38
963

原创 Spark需要的资源调优(Yarn Cluster模式)
Spark应用程序是粗粒度的,也就是说在提交的时候就得规划好需要多少资源,设定了不合适的资源也会影响整体性能。yarn.nodemanager.resource.memory-mb 每个nodemanager分配的内存,也就是该节点上YARN可使用的物理内存总量。官方。
2023-04-01 23:43:46
636

原创 Dataset关联性能优化
如果一大一小两个Dataset进行join,每个woker的内存足够存放小的Dataset,此时最好的处理方式就是将小的Dataset进行广播,有关广播的知识可以参考这篇文章。
2023-03-31 23:45:01
281

原创 广播变量对Spark性能产生的影响
先说一下为什么Spark会引入广播变量?我们在driver端定义了一个变量,如果要在executor端使用,spark会为把这个变量以task的形式给每个executor发送,也就是有多少个task,每个executor中就会有多少个变量,如果该变量是个集合,而且比较大,甚至会导致内存溢出。因此,引入了广播变量来解决这种问题。下面会用实际案例进行详细描述。
2023-03-31 17:25:50
404

原创 collect大RDD性能优化
众所周知,collect算子会把所有数据拉到driver端,如果数据量太大,直接会造成内存溢出。但是该算子在很多实际场景中会经常用到,这个时候就需要采取一定地方优化措施了。
2023-03-31 15:14:18
465
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
3964
1

原创 Python 连续数据离散化最通俗的理解与操作
前言一些数据挖掘算法,特别是某些分类算法,如ID3算法、Apriori算法等,要求数据是分类属性形式。这样,常常需要将连续属性变换成分类属性,即连续属性离散化。离散化是干啥连续属性离散化就是在数据的取值范围内设定若干个离散的划分点,将取值范围划分为一些离散化的区间,最后用不同的符号或整数值代表落在每个子区间中的数据值。所以,离散化涉及两个子任务:确定分类数以及如何将连续属性值映射到这些分类值。常用的离散化方法常用的离散化方法有等宽法、等频法和(一维)聚类。(1)等宽法将属性的值域分成具有相同宽
2021-01-05 18:26:40
11055
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
9955
2

原创 Hadoop面向行和面向列格式详解
前言说到HDFS上面存储数据的格式,一般会想到面向行存储的Avro、SequenceFile(现在较少用);面向列存储的Parquet、ORC等,那么在存储的时候如何选择呢?面向行存储格式(以Avro和SequenceFile为例)Avro基本概念Avro是一个独立于编程语言的数据序列化系统。引入的原因:解决Writable类型缺乏语言的可移植性。Avro数据文件主要是面向跨语言使...
2020-01-17 11:10:54
1450

原创 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
2109
2

原创 HDFS文件的压缩
前言新搭建的集群,需要进行各种测试,于是让一个同事导入一些测试数据,大约1.4T左右。我进行了一个简单的hive测试//故意增加shuffleSELECT DISTINCT(COUNT id) FROM test_table;谁知道…就这么一个简单的SQL,半个小时过去后,仍然没有出结果追查原因原来同事从ftp拉取过来的数据是gzip格式的,他直接如到Hive表中…,而gzip格式的...
2020-01-04 18:06:11
8058
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
71205
10

原创 MapReduce过程详解
MapReduce是一种云计算的核心计算模式,是一种分布式运算技术,也是简化的分布式并行编程模式,主要用于大规模并行程序并行问题。MapReduce的主要思想:自动将一个大的计算(程序)拆分成Map(映射)和Reduce(化简)的方式。流程图如下:数据被分割后通过Map函数将数据映射成不同的区块,分配给计算集群进行处理,以达到分布运算的效果,再通过Reduce函数将结果进行汇...
2018-05-16 11:54:47
3272
原创 coze的基本使用
官网:www.coze.cn我们这个专栏讲解的是agent,所以coze就是一个可以用agent做你想做的事情。节点有很多:我们可以先看看插件:我们要做一个获取新闻资讯的工作流,这里就选择头条新闻插件进行添加。上面就是简单的测试了头条新闻的节点,通过输入:人工智能。就能搜出相关的资讯。我们把开始节点、获取新闻节点、结束节点连起来,一般开始节点可以配置用户要查询的内容,获取新闻节点的输入可以直接引入开始节点的内容,结束节点的输出可以直接获取新闻节点输出的数据:上面就是一个非常简单的工作流。
2025-06-10 22:43:21
705
原创 agent基础概念
如果要做一些标准化的流程,agent是有能力做出来的,但是不要指望能做的多好,可能目前失败案例能达到90%以上,能成功的也是demo级别的,目前还很难做到商业化。但是可以肯定的是agent是大模型的未来,因为目前大模型说直白就是一个一问一答的聊天工具,只有加上agent才能真正做一些事情。这里面核心就是加入大模型的思考,如果仅仅是执行一些动作,那自己写一堆if else都可以搞定。有了大模型,就可以思考接下该执行哪些动作,这个就是agent比较核心的概念。
2025-06-08 22:31:09
889
原创 LangChain开发环境搭建
在搭建LLM环境时,必须在性能和成本之间做出权衡,即在专有大语言模型和开源大语言模型之间做出选择。如果不想在本地私有化搭建LLM环境,可以选择专业的LLM提供者,通过其API来进行开发,详细参考。(2)安装完成后,运行Ollama,在Ollama官网的模型库中选择自己喜欢的LLM。,下载适合自己系统的Ollama版本,运行相应的命令安装。,当然也可以在python官网下载相关包,参考。这里直接用Ollama在本地搭建LLM环境。(3)打开终端,执行相应命令下载和运行模型。下载完成后直接安装即可。
2025-06-04 23:07:35
419
原创 神经网络与Transformer详解
我们可以通过一个模型把一个Token变成一个Embedding向量、把一个单词变成一个Embedding向量、把一句话变成一个Embedding向量、把一张图变成一个Embedding向量。
2025-06-01 11:05:41
1078
原创 吴恩达讲解MCP基础概念
MCP 是一个开放协议 标准化了您的语言模型应用如何获取工具和数据资源的上下文。基于客户端-服务器架构,它定义了您的语言模型应用中的MCP客户端与MCP服务器之间的通信方式,MCP服务器提供工具 数据资源和提示模板给您的应用,自Anthropic于2024年11月推出MCP以来,MCP生态系统发展迅速。
2025-06-01 10:24:37
713
原创 MCP入门实战(极简案例)
MCP(Model Context Protocol,模型上下文协议)2024年11月底由 Antbropic 推出的一种开放标准,旨在统一大型语言模型(LLM)与外部数据源和工具之间的通信协议。Function Calling是AI模型调用函数的机制,MCP是一个标准协议,使AI模型与API无缝交互,而Al Agent是一个自主运行的智能系统,利用FunctionCallinq和MCP来分析和执行任务,实现特定目标。Function Calling 现在基本上被淘汰了,现在几乎全部都用MCP了。
2025-05-30 00:13:23
1260
原创 Workflow
在复杂工作流中,如果所有的数据都使用全局环境数据通讯,尤其是在不同工作块中对同一个键指向的数据进行操作时,会因为对运行时序的判断困难而导致数据管理混乱,这时候,需要通过块间数据传递来确保数据变化与运行时序期望一致,用大白话说,就是确保“块2”能够正确使用它的前一个块“块1”生成的数据进行工作。工作流相当于提供了一个复杂的沙盒环境,沙盒环境中的全局环境数据会影响工作流运行状态,并存储工作流运行过程中的过程数据和最终成果。以下讨论点全部为开放性讨论,没有标准的正确答案,仅作为启发思考和开拓思路的作用。
2025-05-27 21:19:51
1329
原创 大模型Agent
善用思维链技巧在重要的环节设置反思与纠偏机制约定思维链中需要包含的要素,尽量详细具体不可能一遍成功,要学会通过测试的失败例子优化提示词的细节要善于将问题总结成方法论型的提示词(把 AI 当人看)要善于综合使用各种提示词技巧,例如:举例子、PoTAoT等等。
2025-05-26 23:02:16
803
1
原创 维护测试监控LLM应用
LangFuse: 开源 + SaaS(免费/付费),LangSmith 平替,可集成 LangChain 也可直接对接 OpenAI API;LangSmith: LangChain 的官方平台,SaaS 服务(免费/付费),非开源,企业版支持私有部署;调试 Prompt 的 Playground测试/验证系统的相关指标数据集管理各种指标监控与统计:访问量、响应时长、Token 费等等。
2025-05-25 10:45:20
1003
原创 LangChain
LangChain 也是一套面向大模型的开发框架(SDK)LangChain 是 AGI 时代软件工程的一个探索和原型学习 LangChain 要关注接口变更将大语言模型作为一个推理引擎。给定一个任务,智能体自动生成完成任务所需的步骤,执行相应动作(例如选择并调用工具),直到任务完成。可以是一个函数或三方 API也可以把一个 Chain 或者 Agent 的 run()作为一个 Tooltools = [),需要注册SerpAPI(限量免费),并将。
2025-05-24 18:13:01
607
原创 LlamaIndex
LlamaIndex 是一个为开发「上下文增强」的大语言模型应用的框架(也就是 SDK)。上下文增强,泛指任何在私有或特定领域数据基础上应用大语言模型的情况。例如:Question-Answering Chatbots (也就是 RAG)Document Understanding and Extraction (文档理解与信息抽取)Autonomous Agents that can perform research and take actions (智能体应用)
2025-05-21 23:07:42
664
原创 Assistants API
GPT Store和这一波操作一度被认为是创业公司终结者界面不可定制,不能集成进自己的产品只有 ChatGPT Plus/Team/Enterprise 用户才能访问未来开发者可以根据使用量获得报酬,北美先开始承诺会推出 Team/Enterprise 版的组织内部专属 GPTs定制界面,或和自己的产品集成需要传大量文件服务国外用户,或国内 B 端客户数据保密性要求不高不差钱需要极致调优追求性价比服务国外用户,或国内 B 端客户数据保密性要求不高服务国内用户。
2025-05-19 23:30:05
674
原创 大模型RAG
LLM 的知识不是实时的LLM 可能不知道你私有的领域/业务知识2.2、检索增强生成RAG(Retrieval Augmented Generation)顾名思义,通过检索的方法来增强生成模型的能力。RAG类比:你可以把这个过程想象成开卷考试。让 LLM 先翻书,再回答问题。向量是一种有大小和方向的数学对象。它可以表示为从一个点到另一个点的有向线段。例如,二维空间中的向量可以表示为xy(x,y)xy,表示从原点00(0,0)00到点xy(x,y)xy的有向线段。
2025-05-18 08:46:41
881
原创 Function Calling
详细拆解业务 SOP,形成任务工作流。每个任务各个击破,当前别幻想模型一揽子解决所有问题不是所有任务都适合用大模型解决。传统方案,包括传统 AI 方案,可能更合适一定要能评估大模型的准确率(所以要先有测试集,否则别问「能不能做」)评估 bad case 的影响面大模型永远不是 100% 正确的,建立在这个假设基础上推敲产品的可行性。
2025-05-15 22:25:05
987
原创 Prompt Engineering提示工程
Prompt 最早出现在 2018 年。2019 年,GPT-2 第一个在 LLM 中引入了 promptPrompt 就是发给大模型的指令,比如「讲个笑话」、「用 Python 编个贪吃蛇游戏」、「给男/女朋友写封情书」等大模型只接受一种输入,那就是 prompt本质上,所有大模型相关的工程工作,都是围绕 prompt 展开的提示工程「门槛低,天花板高」,所以有人戏称 prompt 为「咒语」Prompt 在未来也许是人类操作 AI 的唯一方式。
2025-05-13 23:26:05
612
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人