- 博客(2499)
- 资源 (69)
- 问答 (17)
- 收藏
- 关注
原创 Flink 高分笔记
这篇博客文章总结了Flink流计算相关的基础知识和实践指南。主要内容包括:1) 流计算基础概念,如事件时间、Watermark机制、Exactly-once语义;2) Flink基础操作,如安装部署、程序结构、并发设置、故障恢复;3) DataStream API核心功能,包括时间概念、窗口计算、状态管理、双流Join等;4) Table API与SQL的使用方法和工作原理。文章提供了丰富的技术文档链接,涵盖了Flink从入门到进阶的各个方面,既有理论讲解也有实践案例,是一个系统的Flink学习资源合集。
2025-06-22 22:50:13
1398
原创 ClickHouse 实战:如何使用聚合组合器
ClickHouse 不仅支持标准聚合函数,还提供了大量更高级的函数以满足大多数分析场景的需求。除了聚合函数之外,ClickHouse 还提供了聚合组合器,这是对查询能力的强大扩展,能够应对海量复杂需求。
2026-02-05 23:19:27
573
转载 Prompt 实践:23 招教你掌握大模型提示词技巧
过去一个月,全球 AI 领域接连引爆"深水炸弹":推理成本直降 80% 的 Deepseek-R1 横空出世,OpenAI 对 GPT-4o 进行了迭代更新,马斯克的 xAI 推出 Grok 3 模型并声称性能超越ChatGPT … 在这场技术地震中,最引人注目的当属完全开源的 DeepSeek。这款主打深度推理的模型不仅性能碾压 GPT-3.5,在结构化思维层面甚至比肩 GPT-4。
2026-02-02 22:03:14
549
原创 Dify 实战:通过 Dify 快速接入 MCP Server
本文介绍了如何在Dify平台快速接入高德地图MCP Server。主要内容包括:获取高德开放平台Key并构建MCP配置地址;在Dify中添加MCP服务;创建Agent应用并配置提示词,通过调用MCP工具实现地理位置查询功能。整个过程展示了Dify原生支持MCP协议的优势,无需编写业务代码即可完成外部工具集成,主要依靠配置和提示词工程实现功能。最终成功验证了应用能正确调用高德地图API查询周边信息。
2026-02-01 22:11:08
650
原创 Dify 实战:使用 Docker Compose 部署 Dify
本文介绍了Dify开源平台的安装部署流程。首先明确了系统最低要求:2核CPU和4GB内存,并提供了macOS、Linux和Windows系统的Docker环境配置指南。随后详细说明了安装步骤:克隆1.9.1版本代码库,配置环境变量,使用docker-compose启动服务。最后通过容器状态检查确认了包括api、worker、web等9个核心服务的正常运行情况。该指南为开发者提供了完整的Dify平台本地部署方案,特别强调了不同操作系统下Docker环境的配置要点。
2026-02-01 19:38:57
302
原创 ClickHouse 实战:深入了解 MergeTree 家族 III 之 SummingMergeTree 表引擎
本文介绍了ClickHouse中的SummingMergeTree表引擎,该引擎用于预先定义聚合条件的汇总查询场景。文章首先分析了使用普通MergeTree表进行聚合查询的缺点,包括额外存储和查询开销。随后详细说明了SummingMergeTree的语法、特性及使用方式,包括指定/不指定求和列的区别、主键与排序键的设置原则,以及该引擎的最终一致性特点。最后指出在实际查询中仍需结合SUM和GROUP BY进行手动聚合以确保结果准确性。该引擎能有效减少数据行数并降低后续汇总查询开销。
2026-01-30 22:39:55
540
原创 ClickHouse 实战:深入了解 MergeTree 家族 II 之 ReplacingMergeTree 表引擎
ReplacingMergeTree是ClickHouse中用于数据去重的表引擎,通过合并数据分片时删除重复行实现"最终一致性"。它基于ORDER BY字段而非PRIMARY KEY去重,支持显式(指定版本列)和隐式版本控制策略,并可标记行状态(is_deleted)。由于去重是异步进行的,查询时需配合FINAL运算符确保结果准确。该引擎适合后台清理重复数据以节省存储空间,但不保证完全无重复数据,适用于对实时性要求不高的场景。
2026-01-27 23:17:00
665
原创 ClickHouse 原理:深入解析数据分片 Part
在 ClickHouse 的世界里,数据分片 Part 是一个核心概念,它直接影响到系统的存储效率、查询性能和数据管理方式。理解数据分片 Part 的工作原理,对于优化 ClickHouse 集群的性能至关重要。本文将从基础概念出发,逐步深入探讨 Part 的各个方面。
2026-01-24 22:07:18
1007
原创 ClickHouse 原理:深入理解数据分片 Part 和分区 Partition
本文介绍了ClickHouse中数据分片(part)与数据分区(partition)的概念及区别。数据分片是磁盘上的物理文件,存储于/var/lib/clickhouse目录下,每个MergeTree表有独立存储路径。通过system.parts系统表可查询分片信息,包括存储位置、分区情况等。数据分区则是通过分区键创建的逻辑划分,可提升大表性能和管理效率。文章还详细解析了分片目录命名规则,如all_3_3_0_5中各数字的含义,并展示了如何通过系统表查询这些信息。
2026-01-24 10:00:03
706
原创 ClickHouse 原理:如何为列式存储构建快速 UPDATE I:特别设计的专用引擎
ClickHouse通过将更新操作转化为插入新数据行的方式,巧妙地规避了列式存储中行级更新的性能瓶颈。本文介绍了ReplacingMergeTree等专为高效更新设计的引擎原理:通过后台合并机制自动保留最新版本数据,实现高吞吐写入与更新。这种"插入代替更新"的架构充分利用ClickHouse强大的并发插入能力,使其在大规模数据场景下仍能保持卓越性能。文章还详细解析了数据分片的结构与合并机制,为理解ClickHouse独特的更新实现方式奠定基础。
2026-01-20 23:28:50
770
原创 ClickHouse 实战:深入了解 MergeTree 家族 I 之 MergeTree 表引擎
在当今的大数据时代,高效的数据存储与查询是每个数据工程师面临的挑战。ClickHouse 作为一款开源的列式数据库管理系统,凭借其卓越的查询性能在 OLAP 场景中脱颖而出。而这一切的核心基础,正是 MergeTree 引擎家族。作为 ClickHouse 中最重要、最复杂的表引擎,MergeTree 的设计哲学值得每一个数据从业者深入理解。
2026-01-18 22:15:38
948
原创 MinIO 实战:通过 Java API 实现 MinIO 基本操作
本文介绍了MinIO对象存储系统的基本概念及其Java SDK的使用方法。主要内容包括环境准备(MinIO服务部署和Maven依赖配置)以及Bucket和Object的核心操作指南。详细讲解了Bucket的创建、存在性检查、列表查看和删除方法,以及Object的上传、下载、元数据获取、列表查看、删除和复制等操作。通过代码示例展示了如何使用MinioClient进行初始化以及各项功能的实现,为开发者提供了与MinIO服务器交互的实用参考。所有示例代码均可在GitHub上获取。
2025-12-06 11:37:37
1038
原创 SpringBoot 实战:Spring Boot 集成 FreeMarker
摘要:本文详细介绍了如何在Spring Boot项目中高效集成FreeMarker模板引擎。文章首先分析了FreeMarker的核心优势,包括简洁语法、强大功能和性能优势。然后通过具体示例展示了项目搭建过程,重点讲解了FreeMarker在Spring Boot中的详细配置参数及其作用,如缓存设置、编码配置、模板路径等。最后提供了完整的YAML配置示例,帮助开发者根据开发和生产环境需求进行灵活配置,实现业务逻辑与视图展示的清晰分离。
2025-11-29 12:03:29
1221
原创 Firecrawl 实战:使用 Docker compose 本地化部署 Firecrawl
Firecrawl是一个高效的网络爬虫工具,本文介绍了使用Docker Compose进行本地化部署的完整流程。首先需要安装Git、Docker Engine和Docker Compose等前置工具,然后克隆项目仓库并配置环境变量。在构建容器时可能会遇到Go模块下载失败的问题,解决方案是修改Dockerfile设置国内代理。最后通过Docker Compose命令构建并启动包含API服务、工作进程、Playwright微服务和Redis数据库的多个容器。该部署方法简化了Firecrawl的本地运行环境搭建过
2025-11-23 00:59:30
777
转载 货拉拉用户画像基于 Apache Doris 的数据模型设计与实践
货拉拉基于Apache Doris构建高效画像计算系统,实现人群标签批量计算与秒级圈选。面对3000+标签、5万+人群的业务规模,Doris通过宽表、高表和人群位图表三类存储模型协同工作,支撑精细化运营需求。系统采用位图计算为核心的异构查询方案,实现宽表、高表及人群表的无缝联动,查询性能提升30倍,内存开销降低50%。该架构支持无限层级规则嵌套,允许人群依赖计算,大幅提升营销活动效率。
2025-11-17 22:52:32
634
转载 数仓设计 I:数据模型架构的四层七阶,数据湖仓建模的第一块基石
本文深入探讨了数据仓库的分层架构设计原则。文章提出了"四层七阶"的分层模型:1)ODS层作为原始数据存储;2)DW层为核心数据处理区,细分为DWD(明细)、DWM(中间)和DWS(汇总)三层;3)APP层面向应用服务;4)维表层专供维度管理。作者强调分层设计应遵循五大原则:高内聚低耦合、核心与扩展分离、公共逻辑下沉、成本性能平衡、数据可回滚。同时指出主题域划分可按业务过程或数据域两种方式,最终目标是构建清晰、稳定、可扩展的数据架构,为业务提供准确高效的数据支撑。
2025-11-16 23:00:22
97
原创 Apache Paimon 入门 如何选择表模式
Apache Paimon数据湖支持多种表模式,包括主键表和Append表。主键表支持CDC数据变更处理,分为固定桶和动态桶模式,分别适用于分区内更新和跨分区更新场景。Append表则针对仅插入数据的场景,提供Scalable和Queue两种模式,前者适合高吞吐流处理和增强型Hive表场景,后者适用于严格顺序消费的需求。每种表模式均经过生产验证,用户可根据具体需求选择合适的数据处理方式。
2025-11-16 22:11:55
1063
原创 深入解析基于 RoaringBitmap 实现的 Bit Slice Index (BSI)
然后对二进制数据从低位向高位遍历,将第 i 位值为 1 的 user_id 存入切片 RoaringBitmap 的 slices[i] 中,形成位切片索引 BSI(Bit Slice Index)。剩下最重要的事情就是为 BSI 添加新的 KV,核心逻辑是在 value 二进制位对应切片 RoaringBitmap 中添加 key:从低位到高位遍历切片 RoaringBitmap,如果 value 二进制位对应的 bit 为 1 则对应的切片 RoaringBitmap 添加 key。
2025-11-16 22:03:36
604
原创 Maven 实战:Failure to find com.github.RoaringBitmap.RoaringBitmap:roaringbitmap:jar
摘要:Maven项目配置RoaringBitmap依赖时出现下载失败问题,错误显示阿里云镜像中未找到该依赖。分析表明Maven镜像配置将阿里云设为全局镜像,覆盖了JitPack仓库请求。解决方案分两步:1)在pom.xml中添加JitPack仓库配置;2)修改settings.xml文件,通过添加!jitpack.io将JitPack仓库从阿里云镜像覆盖中排除。这样可确保RoaringBitmap依赖从正确的仓库下载。
2025-11-15 10:17:11
528
原创 用户画像实战:使用 RoaringBitmap 存储画像标签
摘要:本文探讨了用户画像标签存储方案,指出宽表存储在超大规模场景下存在效率问题,推荐使用Bitmap索引方案。文章分析了属性标签和行为标签的不同特点,提出属性标签适合Bitmap压缩存储,并通过实例说明如何避免多列层级关系导致的错误。实践部分展示了将宽表转换为Bitmap表并利用位图运算实现高效查询的方法,同时强调了对字符型用户ID进行整数编码的必要性,推荐使用RoaringBitmap和自定义Hive函数实现位图计算。该方案适用于标签数量多、数据规模大的场景,能显著提升查询性能。
2025-11-08 22:53:38
682
原创 源码解读 | Flink SQL 深入了解 TableFactory 发现机制
可扩展性:基于 SPI 机制,支持用户自定义扩展灵活性:通过多级匹配策略处理复杂的 TableFactory 选择场景错误诊断:提供详细的错误信息帮助用户调试配置问题。
2025-11-02 22:18:52
993
转载 深入解读 Flink SQL 1.11
自 2019 年初阿里巴巴宣布向 Flink 社区贡献 Blink 源码并在同年 4 月发布 Flink 1.8 版本后,Flink 在社区的活跃程度犹如坐上小火箭般上升,每个版本包含的 git commits 数量以 50% 的增速持续上涨, 吸引了一大批国内开发者和用户参与到社区的生态发展中来,中文用户邮件列表(user-zh@)更是在今年 6 月首次超出英文用户邮件列表(user@),在 7 月超出比例达到了 50%。假设你在一个电商公司,订单和物流是你最核心的数据,你想要实时分析订单的发货情况。
2025-11-01 22:11:51
174
转载 官宣 | Apache Flink 1.13 发布公告
在流式 SQL 查询中,一个最经常使用的是定义时间窗口。Flink 1.13 中引入了一种新的定义窗口的方式:通过 Table-valued 函数。这一方式不仅有更强的表达能力(允许用户定义新的窗口类型),并且与 SQL 标准更加一致。Flink 1.13 在新的语法中支持 TUMBLE 和 HOP 窗口,在后续版本中也会支持 SESSION 窗口。我们通过以下两个例子来展示这一方法的表达能力。例 2:用户在 table-valued 窗口函数中可以访问窗口的起始和终止时间,从而使用户可以实现新的功能。
2025-11-01 10:05:18
135
原创 Flink SQL 深入了解日期与时间函数
Flink SQL 提供了丰富的日期时间函数,包括获取当前系统时间的函数如 LOCALTIME、LOCALTIMESTAMP、CURRENT_DATE、CURRENT_TIMESTAMP/NOW()等。这些函数在不同时区下会返回对应时区的值(Flink 1.13.0+版本),类型分别为TIME(0)、TIMESTAMP(3)、DATE等。在流模式下会对每个记录计算,而批处理模式下只在查询开始时计算一次。使用时需注意时区设置对结果的影响。
2025-10-26 15:59:17
1057
转载 官宣 | Apache Flink 1.12 发布公告
Flink 1.12.0正式发布,带来了多项重要改进:DataStream API支持批处理模式,实现流批统一;新增基于Kubernetes的高可用方案;Kafka SQL connector支持upsert模式;PyFlink扩展支持DataStream API和Kubernetes部署。其他优化包括:新的Data Sink API、Pipelined Region调度、Sort-Merge Shuffle等。该版本包含300多位贡献者的1000多项修改,显著提升了可用性和API一致性。用户可从官网下载体
2025-10-22 23:16:48
160
原创 实战 | Flink DataStream 如何通过 GenericWriteAheadSink 实现 WAL Sink
Flink 通过 WAL(预写日志)机制实现端到端 Exactly-Once 语义。核心原理是将每个 Checkpoint 周期的数据暂存到算子状态中,待 Checkpoint 完成后再写入外部系统。GenericWriteAheadSink 抽象类简化了 WAL Sink 的实现,但仍存在两种极端情况可能导致数据重复:发送过程中断或提交确认失败。文中以 StdOutWALSink 为例展示具体实现,采用 FileCheckpointCommitter 持久化已提交的 Checkpoint 信息。该方案虽不
2025-10-19 22:11:06
387
原创 源码解读 | Flink DataStream GenericWriteAheadSink 深度解析
Flink 1.13.6 的 GenericWriteAheadSink 通过检查点机制实现端到端精确一次语义。该抽象类继承自 AbstractStreamOperator,采用预写日志模式,将输入元素暂存至状态后端,仅在检查点完成时提交数据。核心机制包括:1)构造器初始化检查点提交器;2)open()清理已提交的检查点;3)processElement()序列化数据到任务管理的状态流;4)检查点恢复时重建待提交列表。通过 CheckpointCommitter 标记成功提交的检查点,确保故障恢复时数据不丢
2025-10-19 20:08:29
739
原创 Flink SQL 如何使用 Upsert Kafka Connector
Flink Upsert Kafka Connector支持以upsert方式读写Kafka Topic数据,作为源表时可将Kafka数据转为变更日志流,作为结果表时能消费上游变更日志流。该连接器需要定义主键约束,提供至少一次语义保证,并支持分区级watermark。本文详细介绍了依赖配置、元数据、连接器参数及特性,并通过订单统计示例展示了如何创建Upsert Kafka结果表,将商品类别的订单数据聚合后写入Kafka。
2025-10-18 23:47:27
609
原创 原理解析 | Flink SQL 流查询的确定性
本文探讨了SQL中确定性的概念及其在批处理和流处理中的表现差异。确定性指相同输入总能产生相同结果,但批处理中仍存在非确定性场景,主要源于动态函数(如CURRENT_TIMESTAMP)和不确定函数(如UUID())的行为差异。流处理中,由于数据无界性,动态表上的连续查询会放大不确定性,包括源连接器回溯、处理时间计算和状态TTL淘汰等因素。Flink SQL的确定性仅限于计算部分,不包含外部数据源的不确定性。
2025-10-14 23:12:31
1042
转载 Flink SQL 非确定性更新(NDU)问题探索和规避
本文探讨了Flink流处理系统中的非确定性更新(NDU)问题及其解决方案。NDU问题主要由非确定函数(如RAND()、NOW())、CDC元数据字段变化和维表JOIN引起,会导致状态匹配错误、数据丢失等问题。Flink 1.16版本通过物理计划检测和物化能力引入,能够识别并处理这些问题:对非确定函数直接报错提示,对维表JOIN则通过缓存状态避免不一致。虽然这些方案需要手动开启且存在一定代价,但建议用户尽早启用以降低修复成本。文章强调NDU问题无法彻底解决,需要根据业务场景权衡处理。
2025-10-13 22:39:40
749
原创 Flink SQL Kafka Connector
本文介绍了Flink 1.13版本中Kafka Connector的使用方法。主要内容包括:1) Kafka Connector的Maven依赖配置;2) 如何创建Kafka Source表并配置连接参数;3) 如何获取Kafka的元数据信息,如topic、partition、offset等;4) 详细列出了Kafka Connector的各项配置参数及其说明。文章通过SQL示例展示了如何定义Kafka表结构和元数据字段,并提供了完整的示例代码链接。该Connector支持从Kafka topic消费数据以
2025-10-12 23:09:49
877
翻译 Spark SQL 自适应查询执行 AQE: 在运行时加速执行性能
Spark 3.0引入的自适应查询执行(AQE)框架通过运行时优化显著提升了查询性能。AQE在查询执行过程中基于物化点收集的统计信息动态调整计划,提供三大核心功能:1)动态合并shuffle分区以优化任务粒度;2)运行时调整Join策略为更高效的广播hash join;3)自动检测并处理数据倾斜Join。TPC-DS测试显示查询性能最高提升8倍,平均提升1.1倍以上。AQE有效解决了静态统计信息不准确的问题,减少了对精确统计和手动调优的依赖,使查询优化对数据变化更具弹性。通过设置spark.sql.adap
2025-10-11 22:43:27
860
原创 实战 | Flink CDC 使用 CDC 构建 Streaming ETL
本文介绍了如何使用Flink CDC构建MySQL和Postgres的实时ETL流程。教程通过Docker环境部署了MySQL(存储商品和订单数据)、Postgres(存储物流信息)、Elasticsearch(数据接收器)和Kibana(数据可视化)等组件。详细演示了如何准备数据源(在MySQL中创建products/orders表,Postgres中创建shipments表并插入测试数据),以及如何配置Flink环境(下载依赖包)。最终目标是实现订单表与商品、物流信息的实时关联,构建宽表并写入Elast
2025-10-08 19:16:38
777
原创 Flink CDC The MySQL server has a timezone offset which does not match the configured timezone Asia S
Flink CDC程序运行时因MySQL服务器时区(UTC)与配置时区(Asia/Shanghai)不匹配导致异常。解决方案包括修改MySQL时区为+08:00(临时或持久化配置),或调整Flink CDC的server-time-zone参数。建议根据业务需求选择合适方案,确保时间字段处理一致。修改MySQL时区后需验证配置是否生效(SHOW VARIABLES LIKE '%time_zone%')。注意临时修改重启后失效,持久化配置需修改my.cnf文件或使用MySQL 8.0+的SET PERSIS
2025-10-08 18:43:00
380
apache-mahout-distribution-0.11.1-src
2015-11-30
log4j-1.2.17
2015-11-30
LINUX内核设计与实现
2015-12-14
JavaEE企业应用实战-Struts2+Spring3+Hibernate整合开发
2015-12-17
Android技术内幕.系统卷
2015-12-17
Android高级编程
2015-12-17
Android开发精要
2015-12-17
重构-改善即有代码的设计
2015-12-14
Mahout算法解析与案例实战
2015-12-16
apache-maven-3.3.9-bin
2015-11-30
算法艺术和信息学竞赛
2015-12-14
Better bitmap performance with Roaring bitmaps
2023-03-06
美团外卖离线数仓建设实践
2023-02-19
log4j所需jar包
2016-01-20
Hadoop实战中文版
2015-12-25
Spring-Jar-4.2.4
2016-01-28
Apache Spark源码剖析
2016-11-12
Android开发秘籍
2015-12-17
大型网站技术核心原理与案例分析
2015-12-25
Shell脚本学习指南
2016-05-28
Android应用开发揭秘
2015-12-17
Redis 入门指南
2017-06-02
精通Spring
2016-02-07
Hive Range Between 结果错误问题
2023-02-28
Storm Trident 抛异常不重发
2018-11-23
hive SERDEPROPERTIES 实现正则过滤
2018-06-05
Flink 关于窗口Window的问题
2018-01-17
Hive 运行SQL 重定向文件 输出WARN日志
2017-06-13
Hadoop Distcp报错 队列问题
2017-01-17
Hive Join 失败
2016-11-28
Hive 查询问题
2016-09-07
Hive LOAD DATA 错误
2016-07-23
[ElasticSearch] 中文字符串精确搜索 term 搜不到结果
2016-07-05
mysql group by 统计问题
2016-06-17
大型分布式网站架构的演进
2016-05-16
ubuntu IntelliJ Idea设置快捷方式问题
2016-03-08
罗技键盘 k380 连接上 没有任何的反应?
2016-03-06
Maven archetype:generate报错
2016-01-25
Log4j问题
2016-01-16
Java Stringbuilder调用append()方法报错
2015-12-20
nosql开放性问题
2015-12-18
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
2