跳到主要内容

monotonically_increasing_id:单调递增唯一ID

速查结论

monotonically_increasing_id() 是 Spark SQL 中用于生成单调递增且唯一的 64 位整数 ID 的辅助函数。

语法

monotonically_increasing_id()

参数说明

参数说明
该函数不接受任何参数

功能说明

monotonically_increasing_id() 返回单调递增的 64 位整数。生成的 ID 保证是单调递增和唯一的,但不一定是连续的。当前实现将分区 ID 放在高 31 位,低 33 位表示每个分区内的记录号。假设数据帧的分区少于 10 亿,每个分区的记录少于 80 亿。

该函数是非确定性的,因为它的结果取决于分区 ID。在不同执行中,同一行数据可能获得不同的 ID。

示例

> SELECT monotonically_increasing_id();
0

常见报错与避坑指南

  • 非确定性行为:由于 ID 依赖分区 ID,同一查询在不同执行中可能为相同数据生成不同的 ID。不要依赖该函数生成跨查询的稳定标识符。
  • 不连续递增:生成的 ID 保证单调递增但不保证连续。ID 之间可能存在间隙,且间隙大小取决于分区数和每分区行数。
  • 并发限制:假设分区数少于 10 亿、每分区记录数少于 80 亿。超出此范围可能导致 ID 冲突。

Since: 1.4.0

📱关注公众号

「数据仓库技术」文章同步更新,不错过每一篇干货

微信公众号二维码
💬加群交流

备注「数据仓库技术」加入社群,每日一道大厂SQL真题

交流微信二维码

你可能还想看