- 博客(147)
- 收藏
- 关注
原创 企业数据仓库建模工具选型的常见误区与规避策略
企业数据仓库建模工具选型并非 “选功能最全、技术最新、价格最低” 的工具,而是 “选与业务需求匹配、与团队能力适配、与现有架构兼容、长期成本可控” 的工具。规避误区的核心在于:先明确 “我需要什么”(业务需求、团队能力、数据源),再评估 “工具能提供什么”(功能、适配性、生态),最后计算 “长期投入多少”(采购、运维、培训成本)。只有通过系统性思考与多维度验证,才能选出真正支撑企业数据仓库长期发展的工具。
2025-12-18 19:58:52
815
原创 DeepWiki - 开源的自动化文档生成工具,让你轻松阅读Github仓库源码,支持Deep Research
今天分享一款强大的、开源的,可以将GitHub仓库自动转换为结构化知识库的智能平台 - DeepWiki。对于有阅读源码、需要深入了解某个技术框架的同学,这款神器会有很大的帮助。
2025-12-18 19:52:01
403
原创 AIGC、Agent、MCP、A2A和AG-UI促进AI从基础能力到协同生态演进
近年来,人工智能技术迎来爆发式发展,AIGC、Agent、MCP等概念相继涌现并快速迭代,推动AI从单一工具向协同生态演进,AI技术从“能对话”进化到“能干活”。2022年ChatGPT点燃了AIGC;Function Calling催生了Agent;再往后,行业发现「如何让模型低成本地调用外部世界」成为新瓶颈,于是MCP、A2A和AG-UI三大协议陆续登场。
2025-12-01 16:38:33
650
原创 如何获取Yarn和Spark UI界面指标信息
以下具体的接口功能和返回数据中的指标信息,参考官方文档:http://hadoop.apache.org/docs/r2.6.4/hadoop-yarn/hadoop-yarn-site/ResourceManagerRest.html。当然,Spark官网也有相关的介绍:http://spark.apache.org/docs/2.4.1/monitoring.html。ip和port:Yarn ResourceManager active节点的ip地址和端口号。
2025-11-21 10:25:39
408
原创 Hive高阶分析函数GROUPINGSETS,CUBE, ROLLUP, collect_set, sort_array, parse_url
如collect_list为例子,可以发现日期并不是按照顺序组合的,这里有需求需要按照时间升序的方式来组合。示例:实现同一数据集的多重group by操作。collect_list:和collect_set一样,但是没有去重功能。可以实现这样的上钻过程:月天的PV -> 月的PV -> 总PV。CUBE的子集,以最左侧的维度为主,从该维度进行层级聚合。将分组内的数据放入到一个集合中,具有去重的功能。根据GROUP BY的维度的所有组合进行聚合。用于解析url相关的参数,直接上sql。–按照时间升序来组合。
2025-11-17 11:56:06
335
原创 Hive经典面试题之连续登录、行转列和列转行
在日常工作进行数据的ETL或者面试时,经常遇到类似的问题,比如"统计连续N天交易额超过100万的店铺"、"统计连续登录天数超过3天的用户"等。对于这类问题,思路基本都是一样的。本文将介绍常用的两种解决方案。以"统计连续登录天数超过3天的用户"为需求。注:以下用到的SQL函数,建议参考《Hive的利器:强大而实用的开窗函数》
2025-11-17 11:48:24
257
原创 AI驱动全球开发者生态巨变 - TypeScript超越Python登顶最常用语言、AI全面融入开发全流程、开发者规模爆发式增长
近期,TypeScript首次超越Python成为GitHub贡献者数量最多的语言,以约4.2万名贡献者优势登顶,AI辅助开发与默认支持该语言的开发框架是主要驱动力。其严格类型系统能减少代码模糊性、捕获LLM生成代码的错误,且入门门槛低,新增仓库数量领先。Python虽退居第二,但在AI和数据科学领域仍占主导,驱动近半数新增AI仓库,Jupyter Notebook仍是首选探索环境。JavaScript贡献者体量庞大但增长放缓。此外,开源开发活动创纪录,印度是新增开发者最大来源国。
2025-11-14 12:19:20
352
原创 如何选择适合企业的数据仓库建模工具?
在数字化和Data + AI时代,数据仓库建模工具是企业构建高效数据体系的核心支撑。然而,市场上工具类型繁多、功能各异,选择一款适合自身的工具需要系统性考量。以下从需求分析、工具匹配、决策验证三个维度,为企业提供完整的选型方法论。
2025-11-10 12:30:29
705
原创 Spark通识Spark RDD/Spark SQL/SparkStreaming/StructuredStreaming/MLlib/GraphX/Spark R
在说Spark之前,笔者在这里向对Spark感兴趣的小伙伴们建议,想要了解、学习、使用好Spark,Spark的官网是一个很好的工具,几乎能满足你大部分需求。同时,建议学习一下scala语言,主要基于两点:1. Spark是scala语言编写的,要想学好Spark必须研读分析它的源码,当然其他技术也不例外;2. 用scala语言编写Spark程序相对于用Java更方便、简洁、开发效率更高(后续我会针对scala语言做单独讲解)。书归正传,下面整体介绍一下Spark生态圈。
2025-11-10 12:23:01
600
原创 Kafka作为分布式消息系统的系统解析
Apache Kafka由Scala和Java编写,基于生产者和消费者模型作为开源的分布式发布订阅消息系统。它提供了类似于JMS的特性,但设计上又有很大区别,它不是JMS规范的实现,如Kafka允许多个消费者主动拉取数据,而在JMS中只有点对点模式消费者才会主动拉取数据。Kafka对消息保存时根据topic进行归类,发送消息者称为producer,消息接收者称为consumer。Kafka集群由多个Kafka实例组成,每个实例称为broker。
2025-11-03 11:49:42
1003
原创 Redis事务和持久化机制(RDB快照和AOF)
multi:开启事务用于标记事务的开始,其后执行的命令都将被存入命令队列,直到执行EXEC时,这些命令才会被原子的执行,类似于关系型数据库中的:begin transaction ,相当于MySQL的 start transaction。在事务中的所有命令都将会被串行化的顺序执行,事务执行期间,redis不会再为其它客户端的请求提供任何服务,从而保证了事物中的所有命令被原子的执行。和关系型数据库中的事务相比,在redis事务中如果有某一条命令执行失败,其后的命令仍然会被继续执行。将数据异步保存到磁盘。
2025-11-03 11:43:21
574
原创 Flink在与AI集成的路上再次“遥遥领先” - Flink Agents
在AI技术快速渗透企业场景的当下,如何让AI Agent稳定处理实时海量数据、实现高容错与低时延运行,成为企业数字化转型的关键需求。Apache Flink Agents作为Apache Flink的全新子项目,恰好填补了这一空白,将流处理能力与AI Agent功能深度融合,为企业级Agent应用提供了全新解决方案。以下从项目概览、核心价值、技术特性包括Java/Python/SQL code示例、版本与roadmap等方面,梳理其核心要点。
2025-10-27 11:00:42
1114
原创 聊聊Spark的分区
Spark对接不同的数据源,在第一次得到的分区数是不一样的,但都有一个共性:对于map类算子或者通过map算子产生的彼此之间具有窄依赖关系的RDD的分区数,子RDD分区与父RDD分区是一致的。首先来了解一下Spark中分区的概念,其实就是将要处理的数据集根据一定的规则划分为不同的子集,每个子集都算做一个单独的分区,由集群中不同的机器或者是同一台机器不同的core进行分区并行处理。对于可切分文件,如text文件,那么通过加载文件得到的RDD的分区数默认与该文件的block数量保持一致;
2025-10-27 10:43:33
413
原创 OpenAI四大核心发布深度解析:AgentKit、Codex正式版、Apps SDK与Sora 2 API
OpenAI最近在旧金山举办的DevDay 2025开发者大会上,以 “从想法到实践的门槛革命” 为主题,推出了一系列颠覆性工具与API。此次发布不仅涵盖智能体开发、代码生成、应用生态和视频创作四大核心领域,更标志着OpenAI从AI模型提供者向 “可调用、可协同、可进化” 的智能操作系统平台全面转型。本文将介绍AgentKit、Codex正式版、Apps SDK与Sora 2 API的核心功能、技术突破与行业影响,展现AI时代的生产力新范式。
2025-10-24 09:54:05
1494
原创 Redis特性、应用场景和常见的数据结构
redis是用C语言开发的一个基于内存的、高性能key-value键值对的、开源nosql数据库。目前,redis的key是字符串类型的,但value支持多种数据类型:字符串(string)、哈希(hash)、列表(list)、集合(set)、有序集合(sortedset),通过提供多种键值数据类型来适应不同场景下的存储需求。
2025-10-24 09:41:31
761
原创 分布式流平台Kafka
消息传递、存储和流处理的组合是Kafka作为流式处理平台的关键特性。像HDFS这样的分布式文件系统允许存储静态文件来进行批处理。这样系统可以有效地存储和处理历史数据。而传统的企业消息系统允许在你订阅之后处理将来的数据,并在这些数据到达时处理它。Kafka结合了这两种能力,这种组合对于Kafka作为流处理应用和流数据管道平台是至关重要的。通过消息存储和低延迟订阅,流应用程序可以以同样的方式处理历史和将来的数据。
2025-10-20 10:51:25
995
原创 Spark闭包函数从产生到在executor执行经历了什么?
简而言之,就是要通过网络传递函数、然后执行,期间会经历序列化和反序列化,所以要求被传递的变量必须可以被序列化和反序列化,否则会抛类似Error:Task not serializable: java.io.NotSerializableException when calling function outside closure only on classes not objects这样的异常。1.driver通过反射,运行时找到闭包访问的变量,并封装成一个对象,然后序列化该对象。
2025-10-20 10:50:58
193
原创 Java并发队列与容器BlockingQueue/CopyOnWrite/ConcurrentHashMap
基于数组实现的有界阻塞队列。因为基于数组实现,所以具有查找快,增删慢的特点。生产者和消费者用的是同一把锁,不能并行执行效率低。它底层使用了一种标准互斥锁ReentrantLock,即读读、读写,写写都互斥,当然可以控制对象内部是否采用公平锁,默认是非公平锁。消费方式是FIFO。生产和消费数据时,直接将枚举对象插入或删除,不会产生或销毁额外的对象实例。应用:因为底层生产和消费用了同一把锁,定长数组不用频繁创建和销毁对象,适合于想按照队列顺序去执行任务,还不想出现频繁的GC的场景。
2025-10-17 13:44:49
820
原创 Spark流式程序中广播变量和累加器为何使用单例模式
但是如果你改变了调度模式,如采用公平调度模式,同时设置Spark流式程序并行执行的job数大于1,如设置参数spark.streaming.concurrentJobs=4,则必须加上同步代码。在Spark流式组件如Spark Streaming底层,每个输出流都会产生一个job,形成一个job集合提交到线程池里并发执行,详细的内容在后续介绍Spark Streaming、Structured Streaming时再做详细阐述。在多个输出流共享广播变量的情况下,同时配置了公平调度模式,也会产生并发问题。
2025-10-17 13:40:54
250
原创 面试与实战 | Spark调优策略
在利用Spark处理数据时,如果数据量不大,那么Spark的默认配置基本就能满足实际的业务场景。但是当数据量大的时候,就需要做一定的参数配置调整和优化,以保证业务的安全、稳定的运行。并且在实际优化中,要考虑不同的场景,采取不同的优化策略。
2025-10-13 10:28:50
771
原创 JVM垃圾回收器、内存分配与回收策略
一般的垃圾回收器是在尽量短的时间内进行垃圾回收,这样程序与用户交互的时间间隔比较小,不会出现长时间的卡顿现象。G1取消了堆内结构的新生代、老年代的物理空间划分,将整个Java堆划分为大小固定的独立区域,后台维护一个优先列表来跟踪这些区域的垃圾堆积程度,每次根据允许收集的时间,优先回收垃圾最多的区域。parNew收集器即并行收集器,采用的是多线程方式进行垃圾回收,可以理解为Serial收集器的多线程版本,吞吐量要比串行高很多,是服务器级别的虚拟机默认使用的,用来处理新生代的垃圾回收器。
2025-10-13 10:28:26
602
原创 HBase中Memstore存在的意义以及多列族引起的问题和设计
HFile是存储在hdfs上的,WAL预写日志也是,但Memstore是在内存的,增加Memstore大小并不能有效提升写入速度,为什么还要将数据存入Memstore中呢?一个region中存有多个store,当region分裂时导致多个列族数据存在于多个region中,查询某一列族数据会涉及多个region导致查询效率低(这一点在多个列族存储的数据不均匀时尤为明显)多个列族则对应有多个store,那么Memstore也会很多,因为Memstore存于内存,会导致内存的消耗过大。列族数量,要尽可能的少。
2025-10-11 11:26:52
275
原创 Hive数据导入HBase导致数据膨胀的问题解决方案
最近朋友公司在做一些数据的迁移,主要是将一些Hive处理之后的热数据导入到HBase中,但是遇到了一个很奇怪的问题:同样的数据到了HBase中,所占空间竟增长了好几倍!当然,除了上述原因,还有很多涉及底层的原理环节和实际的业务场景需求,这就要求我们对HBase有足够的了解。弱schema的特性能够很好的应对业务数据频繁变化的情况,也能够方便支持一些特殊业务场景的数据逻辑。HBase中的数据相对于Hive中的数据会新增一些附加信息导致磁盘占用的增加,比如布隆过滤器。
2025-10-11 11:26:15
457
原创 Hive面试之order by、sort by、distribute by、cluster by的区别
当设置mapred.reduce.tasks>1,则sort by只保证每个reducer的输出有序,不保证全局有序。好处是:执行了局部排序之后可以为接下去的全局排序提高不少的效率(其实就是做一次归并排序就可以做到全局排序。能保证每一个reduce负责的数据范围不重叠了,但是不保证排序的问题。只有一个reduce时,cluster by效果不明显,可以执行set mapred.reduce.tasks>1来使效果明显。会将所有的数据汇聚到一个reduce上去执行,然后能保证全局有序。
2025-10-11 11:25:04
386
原创 Spark SQL详解 | 目前Spark社区最活跃的组件之一
Spark SQL是一个用来处理结构化数据的Spark组件,前身是shark,但是shark过多的依赖于hive如采用hive的语法解析器、查询优化器等,制约了Spark各个组件之间的相互集成,因此Spark SQL应运而生。Spark SQL在汲取了shark诸多优势如内存列存储、兼容hive等基础上,做了重新的构造,因此也摆脱了对hive的依赖,但同时兼容hive。除了采取内存列存储优化性能,还引入了字节码生成技术、CBO和RBO对查询等进行动态评估获取最优逻辑计划、物理计划执行等。
2025-10-11 11:23:53
1300
原创 Spark RDD详解 —— RDD特性、lineage、缓存、checkpoint、依赖关系
RDD(Resilient Distributed Datasets)弹性的分布式数据集,又称Spark core,它代表一个只读的、不可变、可分区,里面的元素可分布式并行计算的数据集。RDD是一个很抽象的概念,不易于理解,但是要想学好Spark,必须要掌握RDD,熟悉它的编程模型,这是学习Spark其他组件的基础。提到大数据必提分布式,而在大规模的分布式集群中,任何一台服务器随时都有可能出现故障,如果一个task任务所在的服务器出现故障,必然导致这个task执行失败。
2025-10-11 11:22:05
1043
原创 不可不知的资源管理调度器Hadoop Yarn
Yarn(Yet Another Resource Negotiator)是一个资源调度平台,负责为运算程序如Spark、MapReduce分配资源和调度,不参与用户程序内部工作。同样是Master/Slave架构。主节点,全局资源管理器,负责整个系统的资源管理和分配,主要由调度器和应用程序管理器组成。调度器根据容量、队列等限制条件(如每个队列分配多少资源、最多执行一定数量的作业等)将系统中资源分配给各个正在运行的应用程序。
2025-09-22 15:31:34
889
原创 Spark集群和任务执行
Driver:Spark框架中的驱动器,运行用户编写Application 的main()函数。类比于MapReduce的MRAppmaster。Executor:运算任务执行器,运行在worker节点上的一个进程。类似于MapReduce中的MapTask和ReduceTask。Worker:从节点,负责控制计算节点,启动Executor。类比Yarn中的节点资源管理器。Master:主节点,控制整个集群,监控worker。在Yarn模式中为全局资源管理器。
2025-09-22 15:29:13
450
原创 聊聊如何准备找工作 - 面试求职
如果有些公司,让你做一些Java Web的相关工作,那么Java Web相关的技术你至少要会用,比如Spring Cloud、SSM、dubbo等(当然如果你的求职意向是大数据,却让你负责一些Java Web的,要三思而行)这个一方面,是你在找工作中,面试官要问的,一方面也能拓展你对技术所能应用的场景的了解,拓宽你的视野。找工作是一件极其消耗精神力的活,如果在自己预期的时间内,不能拿到满意的offer,其中产生的影响不言而喻,而衡量一个"满意的offer"标准之一就是薪资是否满足了自己的期望。
2025-09-17 14:54:55
1003
原创 一站式AI Agent开发、优化和管理平台 — 字节扣子之Coze Loop和Coze Studio
最近字节开源了扣子(Coze)的2个核心项目:Coze Loop(扣子罗盘)和Coze Studio(扣子开发平台),且采用Apache 2.0许可证。加上此前已经开源的开发框架Enio(AI应用编排框架,让Agent能灵活接入不同模型和数据源),可以说是覆盖了Agent从开发、评测到运维的全生命周期。本文将详细介绍Coze Loop和Coze Studio能够解决什么问题、架构和核心特性。
2025-09-17 14:49:54
1140
原创 JVM新生代/老年代垃圾回收器、内存分配与回收策略
一般的垃圾回收器是在尽量短的时间内进行垃圾回收,这样程序与用户交互的时间间隔比较小,不会出现长时间的卡顿现象。G1取消了堆内结构的新生代、老年代的物理空间划分,将整个Java堆划分为大小固定的独立区域,后台维护一个优先列表来跟踪这些区域的垃圾堆积程度,每次根据允许收集的时间,优先回收垃圾最多的区域。parNew收集器即并行收集器,采用的是多线程方式进行垃圾回收,可以理解为Serial收集器的多线程版本,吞吐量要比串行高很多,是服务器级别的虚拟机默认使用的,用来处理新生代的垃圾回收器。
2025-09-15 11:55:18
1010
原创 Java中7种常见的排序算法实现-快速/选择/冒泡/插入/希尔/大顶堆/归并排序
拿数组5, 2, 8, 9, 1, 3,4来说, 数组长度为7, 当increment为3时, 数组分为两个序列5、2、8和9、1、3、4, 第一次排序, 9和5比较, 1和2比较, 3和8比较, 4和比其下标值小increment的数组值相比较。根据需求, 如果你想要结果从大到小排列, 它会首先将数组进行分组, 然后将较大值移到前面, 较小值移到后面, 最后将整个数组进行插入排序, 这样比起一开始就用插入排序减少了数据交换和移动的次数, 可以说希尔排序是加强版的插入排序。将当前元素放在这个小的后面。
2025-09-15 11:53:35
579
原创 Spark广播变量HttpBroadcast和TorrentBroadcast对比
请求数据的时候会先获取block的所有存储位置信息,并且是随机的在所有存储了该executor的BlockManager去获取,避免了数据请求服务集中于一点。总之,就是HttpBroadcast导致获取广播变量的请求集中于driver端,容易引起driver端单点故障,网络IO过高影响性能等问题,而TorrentBroadcast获取广播变量的请求服务即可以请求到driver端也可以在executor,避免了上述问题,当然这只是主要的优化点。
2025-09-12 13:59:56
368
原创 互联网大厂的背景调查都调查些什么,应该怎么准备?
毫无疑问,这种通过第三方背景调查机构对候选人进行背景调查往往是有一定规模的大厂采用的,比如国内的阿里、腾讯、字节,外资企业的微软、PayPal等,毕竟价格不菲。近年来,无论是互联网行业,还是其他行业,都"卷"的厉害,而背调也越来越严格化、专业化,大家找工作时还是要本着实事求是的原则。此外,有的背调机构在核实你的信息时,通常有自己的核实渠道,也就是说,可能不会通过联系候选人提供的证明人进行核实。调查的内容也会随着候选人的职级、薪酬等有所不同,当然也看企业支付给背调机构的费用,要调查的具体事项。
2025-09-12 13:58:27
1393
原创 Hadoop集群升级NoSuchMethodError: org.apache.thrift.transport.TSocket.<init>(Lorg/apache/thrift/TConfig
原因Spark应用中使用了org.apache.thrift libthrift依赖包新版本不兼容老版本。比如老版本是0.9.3,Hadoop版本升级后,libthrift版本为0.16.0,需要调整pom中的依赖。Spark查询/保存Hive数据,在Hadoop集群升级后遇到如下异常。
2025-09-11 13:16:28
193
原创 HBase高级特性(布隆过滤器和协处理器)、列族设计、rowkey设计以及热点问题处理
在阐述HBase高级特性和热点问题处理前,首先回顾一下HBase的特点:分布式、列存储、支持实时读写、存储的数据类型都是字节数组byte[],主要用来处理结构化和半结构化数据,底层数据存储基于hdfs。同时,HBase和传统数据库一样提供了事务的概念,但是HBase的事务是行级事务,可以保证行级数据的原子性、一致性、隔离性以及持久性。
2025-09-10 11:22:36
1269
原创 Hive中的3种虚拟列以及Hive如何进行条件判断
map任务处理的数据所对应文件的块内偏移量,当前全局文件的偏移量。对于块压缩文件,就是当前块的文件偏移量,即当前块的第一个字节在文件中的偏移量。Hive中可能会遇到根据判断不同值,产生对应结果的场景,有三种实现方式:if、coalesce、case when。示例select coalesce(null,null,5,null,1,0) as x;可以与某字段多个比较值的判断,并分别产生不同结果,与其他语言中case语法相似。获取参数列表中的首个非空值,若均为null,则返回null。
2025-09-10 11:18:24
378
原创 Kafka高性能揭秘 —— sequence IO、PageCache、SendFile的应用详解 - Kafka面试
大家都知道Kafka是将数据存储于磁盘的,而磁盘读写性能往往很差,但Kafka官方测试其数据读写速率能达到600M/s,那么为什么Kafka性能会这么高呢?首先producer往broker发送消息时,采用batch的方式即批量而非一条一条的发送,这种方式可以有效降低网络IO的请求次数,提升性能。此外这些批次消息会"暂存"在缓冲池中,避免频繁的GC问题。批量发送的消息可以进行压缩并且传输的时候可以进行高效的序列化,从而减少数据大小。
2025-09-08 14:15:14
644
原创 详细解析SparkStreaming和Kafka集成的两种方式的区别和优劣
spark streaming是基于微批处理的流式计算引擎,通常是利用spark core或者spark core与spark sql一起来处理数据。在企业实时处理架构中,通常将spark streaming和kafka集成作为整个大数据处理架构的核心环节之一。
2025-09-08 13:55:14
1186
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅