【Hudi】 并发控制 — 多个作业同时写怎么办
两个写入作业同时往一张表写数据,会不会把对方的数据覆盖掉? 数据模型 先讲 Hudi 的数据模型,因为并发控制的前提是知道每条记录长什么样。 不是所有 Hudi 表都要有主键和分区。 COW 表可以不指定 recordKey,只能做批量追加,每次写入都是新文件。MOR 表必须指定 recordKey
两个写入作业同时往一张表写数据,会不会把对方的数据覆盖掉? 数据模型 先讲 Hudi 的数据模型,因为并发控制的前提是知道每条记录长什么样。 不是所有 Hudi 表都要有主键和分区。 COW 表可以不指定 recordKey,只能做批量追加,每次写入都是新文件。MOR 表必须指定 recordKey
Hudi 表目录下有个 .hoodie/ 文件夹,里面放的不是数据,是元数据。这套元数据叫 Timeline,是 Hudi 读写一致性的核心。 为什么需要 Timeline Parquet 文件本身是死的——它不会告诉你"我现在是最新版本"还是"已经被更新替代了",也不会告诉你"写我的那个作业成功提
一条更新来了,Hudi 怎么知道要改哪个文件?这就是 File Group 和 Index 要解决的事。 为什么不能扫全表 最简单的更新方案是:找出所有分区里所有 Parquet 文件,逐个读出来,找到要改的行,写回去。这就是全量重写的逻辑。 - 一张 100GB 的表,改一行也要扫 100GB -
Hudi 没有发明新存储格式,它站在 Parquet 和 Avro 之上。这不是"技术选型",而是刻意为之。 为什么用两种格式 Parquet 是列式文件,读的时候只扫需要的列,跳过滤掉的不读。一张 100 列的表查 3 个字段,Parquet 只读 3% 的数据。 Avro 是行式文件,一行一行写
Parquet、HDFS / 对象存储上的文件,写完就不能改。但业务总是要改 — 用户改了收货地址、订单从"待支付"变成"已发货"、某笔交易被风控标黑。 这些"改一行"的事情落到 Parquet 层,就变成了"重写整个文件"。 传统做法:Hive/Spark OVERWRITE 最直接的思路是 IN
自媒体盛行,为什么我还是选择做个人博客?这篇文章算是一个自问自答。
在进行量化回测时,如果对所有股票使用同一套因子组合,不仅意义不大,还会影响策略在单个股票上的表现,毕竟不同的股票有着不同的特点,不应当强行硬套所谓“四海皆准”的策略参数。因此,对股票进行粗筛分组很有必要,但前提是筛选和分组条件应当与后续策略的选择存在因果关系,否则很容易出现样本量太小而没有统计学意义
学习背景 基础:Python + Rust 高级后端、大数据开发 - 基础:Python + Rust 高级后端、大数据开发 环境:国内开发环境 - 环境:国内开发环境 目标:构建复杂 Agent,覆盖面试常见问题 - 目标:构建复杂 Agent,覆盖面试常见问题 时间:每天 1 小时 - 时间:每
核心问题:Agent 和 ChatBot 的本质区别是什么? 场景引入:用户说"帮我查一下上周的销售数据,做个分析报告" ChatBot:只能回答"我无法访问你的数据" - ChatBot:只能回答"我无法访问你的数据" Agent:能理解→规划→执行→输出报告 - Agent:能理解→规划→执行→
从执行者到规则制定者,一个人在社会上的位置跃迁靠的不只是能力,还有资源、位置和时机。这是一篇四层位置模型下的自我定位思考。