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真题
