我有一个包含MM +记录的庞大数据集,我正在尝试为每条记录分配唯一的ID。我试过下面的代码但是由于行id是顺序的,所以需要很多时间。我试过调整内存参数来优化作业,无法获得太多性能。
示例代码段
JavaRDD<String> rawRdd=......
rawRdd.zipWithIndex()
.mapToPair(t->new Tuple2<Long,String>(t._2,t._1))
有没有更好的方法来分配唯一ID?感谢
答案 0 :(得分:1)
方法1:如果您的要求只是分配唯一ID,则可以将UUID用作唯一行ID:
rawRdd.mapToPair(t->new Tuple2<String,String>(t,UUID.randomUUID().toString()));
唯一的缺点是id长度为36个字节。
方法2:创建一个集中系统来分配唯一ID。我使用基于REST的API,它遵循模式生成id,每个map操作都调用REST服务来获取唯一id。
第二种方法让您完全控制设计id的模式。