Java 如何为每个记录生成唯一的id
我有一个包含MM+记录的庞大数据集,我正在尝试为每个记录分配唯一的id。我尝试了下面的代码,但它需要很多时间,因为行id是连续的。我试图调整内存参数来优化作业,但并没有获得太多性能 示例代码片段:Java 如何为每个记录生成唯一的id,java,apache-spark,Java,Apache Spark,我有一个包含MM+记录的庞大数据集,我正在尝试为每个记录分配唯一的id。我尝试了下面的代码,但它需要很多时间,因为行id是连续的。我试图调整内存参数来优化作业,但并没有获得太多性能 示例代码片段: JavaRDD<String> rawRdd=...... rawRdd.zipWithIndex() .mapToPair(t->new Tuple2<Long,String>(t._2,t._1)) javarddrawrdd=。。。。。。 rawRdd.zipWi
JavaRDD<String> rawRdd=......
rawRdd.zipWithIndex()
.mapToPair(t->new Tuple2<Long,String>(t._2,t._1))
javarddrawrdd=。。。。。。
rawRdd.zipWithIndex()
.mapToPair(t->new Tuple2(t.\u 2,t.\u 1))
有没有更好的方法来分配唯一id?感谢方法1:如果您的要求只是分配唯一的id,您可以使用UUID作为唯一的行id:
rawRdd.mapToPair(t->new Tuple2<String,String>(t,UUID.randomUUID().toString()));
rawRdd.mapToPair(t->newtuple2(t,UUID.randomuid().toString());
唯一的缺点是id长度为36字节
方法2:创建一个集中式系统来分配唯一的id。我使用基于REST的API,它遵循一种模式来生成id,并且每个映射操作调用REST服务来获得唯一的id
第二种方法为您提供了设计id模式的完全控制权。谢谢,您可以添加有关方法2的更多详细信息吗?请遵循[rest示例]()使用rest创建集中式id,并从spark调用它以将id分配给每个记录。