如何在AWS Data Glue/Data Brew中为ETL行生成唯一标识符?
为AWS Data Brew/Data Glue ETL流程生成行级唯一ID/流水ID
AWS Data Brew 实现方案
1. 生成流水ID(自增序号)
在Data Brew Recipe中添加计算列,使用内置的ROW_NUMBER()函数:
- 操作步骤:打开Recipe编辑器 → 点击「添加步骤」→ 选择「添加计算列」
- 配置细节:
- 列名:比如
流水ID - 公式:
ROW_NUMBER() - (可选)分区与排序:如果需要按特定分组生成流水号,可设置分区键;若要全局唯一的流水ID,留空分区键,排序可选择任意列(或默认处理顺序)
- 列名:比如
生成的ID会按Data Brew处理行的顺序自增,适合需要有序标识的场景。
2. 生成全局唯一UUID
同样通过添加计算列,使用UUID()函数:
- 列名:比如
唯一ID - 公式:
UUID()
这个函数会生成标准的UUID字符串,分布式场景下几乎不会重复,适合不需要顺序但要求全局唯一的标识需求。
同步到Brew目录表
完成Recipe配置后,点击「发布Recipe」,然后在数据集设置中选择「更新目录表」,确保新生成的ID列被同步到Brew目录表中。
AWS Data Glue 实现方案
1. 生成流水ID
在Glue Spark作业(或Glue Studio可视化作业)中,使用Spark内置的monotonically_increasing_id()函数:
from pyspark.sql.functions import monotonically_increasing_id # 读取CSV数据后添加流水ID列 df = df.withColumn("流水ID", monotonically_increasing_id())
该函数会生成一个递增的64位整数,适合全局流水标识。
2. 生成全局唯一UUID
使用Spark的uuid()函数生成UUID字符串:
from pyspark.sql.functions import uuid # 添加唯一ID列 df = df.withColumn("唯一ID", uuid())
生成的UUID是全局唯一的,无需担心重复问题。
注意事项
如果使用Glue爬虫摄取数据,爬虫本身不会自动生成ID,需要在后续的Glue ETL作业中添加上述步骤,再将处理后的数据写入目录表。
内容的提问来源于stack exchange,提问作者VJVRR
相关产品推荐
相关产品推荐

