主题
技术博客
平台核心能力背后的工程实录:为什么这么设计、怎么实现、实测数字如何。不写概念文,只写做过的东西。
文章列表
- NL2SQL 准确率是怎么做上去的:语义层、召回硬化与 100 题评测 2026-08 为什么裸 LLM 写 SQL 到不了生产、语义层 NL2MQL2SQL 怎么编译、schema linking 兜底怎么硬化、评测体系怎么防自欺。
- 作业失败一键根因:智能诊断的证据链设计与 33 次带标准答案的实测 2026-08 19 个证据工具真连引擎、启发式提取降噪、agentic 归因、ground truth 审计:LLM 诊断的上限由证据决定,不由 prompt 决定。
- 一台机器跑起整套湖仓:k3s 部署 Kyuubi/Spark/Iceberg/Doris 怎么做对 2026-08 单机 k3s 上摆下 SQL 网关、流批引擎、OLAP、对象存储全家桶:组件选型、部署顺序、资源三层策略、持久化原则与日志采集。
- Iceberg 元数据治理怎么做对:四类膨胀源、维护三板斧与自动化六原则 2026-08 从一个 46MB 数据配 15GB 元数据的真实案例讲起:metadata.json/快照/孤儿文件/小文件各怎么治、维护顺序、以及为什么必须平台化自动执行。
- 多租户数据平台的权限该怎么建:三条威胁模型、四条设计原则 2026-08 控制面鉴权不等于隔离:数据面小账号、单一权威来源、fail-closed、凭证不落盘,四条原则各怎么落地。
- 调度器多副本,不引 ZooKeeper:DB CAS + slot 分片就够了 2026-08 不选主、不上分布式锁:触发 CAS、状态机 CAS + outbox、心跳租约、slot 分片,四个机制怎么把「不双跑、不丢任务」闭环。
- Hive Metastore 的僵尸表锁:一把锁躺了 17 天,谁写这张表谁排队 2026-08 HMS 4.0 默认不回收超时锁:housekeeping 怎么开才不踩 gap lock 死锁、锁等待上限怎么分级;以及「无锁提交」实测——HMS 4.0.0 上 CAS 并发失效会静默丢提交,升到 4.0.1+ 老引擎又连不上。
- Flink CDC 建好了却同步不出数据:别等作业跑起来才发现 binlog 没开 2026-08 CDC 失败点越靠后代价越高:一张源库体检清单,以及把它产品化成「向导即时探测 + 保存 fail-closed」两道闸。
- 不起 Spark,把 CSV/Excel 直接写成 Iceberg 表:10 万行 2~5 秒 2026-08 维表字典表的入湖通道:为什么后端直写胜过 spark-submit、类型推断怎么防「预览正常第 8 万行炸」、装载为什么必须单事务。
- Spark/Flink 的 Web UI 不能裸奔:多租户平台的鉴权反向代理设计 2026-08 NodePort 直通是 RCE 级攻击面:票据换作用域 cookie、canonical 路径、双态路径闸、Location 改写与脱敏兜底,五个关键设计。
- 国产数据库怎么接进数据湖:达梦/人大金仓/openGauss/GaussDB/OceanBase 接入实录 2026-08 五个库按内核家族收敛成三套方言,元数据/入湖/直查三个平面分级放行,能力边界宁可写窄。
- Trino 一重启,动态 catalog 全丢了:三路对账的自愈设计 2026-08 dynamic catalog 是 memory store:被 OOMKilled 教育之后,事件、就绪、周期三路对账怎么把「运行时注入的状态」兜成自愈。
- 一个 Spark Driver 跑多人 Notebook:内核多路复用与并发隔离怎么做对 2026-08 按会话拆解释器而非按人拆进程:变量互通为什么不需要桥、隔离为什么要在 Python 命名空间与 Spark 会话态两层都切、长跑的 cell 用什么判据判死。
- Spark 3.5 升 4.1.3 实录:Iceberg 1.11 的 class 61、JDK 17 底座、CALL 鉴权前置到 parser 2026-08 升级顺序为什么必须递进、三道运行期关卡编译期一个都看不见,以及 Spark 4 在 analysis 阶段就执行 CALL 之后鉴权该拦在哪一层。
- k3s 镜像盘只增不减:删 8 个 tag 释放 0 字节,孤儿 manifest 才是真占盘的那个 2026-08 containerd 的删除语义、三个存储层、引用式与「有没有容器在用」式判据的区别,以及一次释放 34G 的实测拆解。
- SQL 跑成功、数字静默虚高:1:N join 的 fan-out 与双 1:N chasm trap 怎么治 2026-08 语义层最危险的失败模式:两个 1:N 相乘让两个指标以不同倍数虚高;为什么 adopt 成熟语义引擎、怎么做到只编译不执行、A/B 实测差异恰好就是 fan-out 那几例。
Flink SQL 实践笔记
实时计算日常会反复撞上的那些点:checkpoint 间隔、changelog 与 retract、Join 与窗口的选型、Iceberg 流批读写、写 MySQL 的坑。
- Flink checkpoint 间隔怎么定:写 Iceberg 为什么是 5~15 分钟,秒级为什么不划算 2026-08 事务 sink 与非事务 sink 的可见时刻不同,间隔往下压的两条成本线(状态文件数、湖表小文件数)都是线性的。
- Flink 流批一体读 Iceberg:snapshot 区间的参数矩阵与 V2 表的读取约束 2026-08 streaming 与 start/end-snapshot-id 的七种组合(两种直接报错)、批跑历史再流接增量的交接点、V2 表并发与分区约束。
- FlinkSQL + Iceberg 搭实时看板:Append 流与 Changelog 流是两套写法 2026-08 窗口 early-fire 与 groupAgg 两条路径、写 V2 表必须配的 checkpoint 开关、看板侧的时效性四个旋钮。
- FlinkSQL 的 retract 机制:撤回消息为什么由上游算子发 2026-08 同一句 SQL 批与流的输出差异、撤回消息由谁产生的状态成本权衡、append/upsert/retract 三类 sink 的能力边界。
- FlinkSQL 常用 Join 方式:Regular / Interval / 维表 Join 怎么选 2026-08 流表对偶与动态表、双流 Join 的 state 为什么会无限涨、SEMI/ANTI 的语义、两种维表 Join 的实现差异。
- FlinkSQL 窗口使用:三类窗口的语义差异与去重、PV/UV 的三种写法 2026-08 GROUP WINDOW / 窗口 TVF / OVER WINDOW 各自适用什么,以及同一个去重和 PV-UV 需求分别怎么落。
- Flink SQL 增量同步到 MySQL:自增主键、结果集过大与主键冲突 2026-08 自增主键会被攒批按主键合并导致丢数、用 CREATE TABLE LIKE 重声明主键、分区读参数,以及三个常见报错。
- FlinkSQL 处理 binlog:changelog 的三种处理方式 2026-08 过滤删除、把变更标记当普通字段传下去、交给下游 upsert —— 三种做法各自的适用面与代价。
- FlinkSQL 集成 Hive 与 FileSystem:流批读写、维表 Join 与小文件合并 2026-08 流/批两种模式读写 Hive、Join 最新分区、FileSystem Sink 的 rolling 策略与 compaction 的边界。
- FlinkSQL 嵌套类型处理:ROW / MAP / ARRAY 的声明、引用与构造 2026-08 结构体到 Flink SQL 的类型映射、嵌套字段怎么引用、三个内置构造函数,以及数组的展开与聚合。
- Flink SQL 行列转换:UNNEST 展开、LISTAGG 聚合与 JSON 数组处理 2026-08 一行转多行与多行转一行的几种写法,含 explode / collect_list / collect_set 与 JSON 数组字符串的展开。
对这些能力感兴趣?平台支持私有化部署,NL2SQL 等能力也可组件化集成(OEM 合作)。联系 QQ:1559851993,或先看核心能力总览。