Как сгенерировать уникальный идентификатор для каждой искры записи

У меня есть огромные наборы данных с записями MM+, и я пытаюсь присвоить каждой записи уникальный идентификатор. Я пробовал код ниже, но это занимает много времени, так как идентификатор строки является последовательным. Я попытался настроить параметры памяти для оптимизации работы, но не смог добиться большой производительности.

пример фрагмента:

JavaRDD<String> rawRdd=......
rawRdd.zipWithIndex()
.mapToPair(t->new Tuple2<Long,String>(t._2,t._1))

Есть ли лучший способ назначить уникальный идентификатор? Благодарность


person rashmi mardur    schedule 13.09.2017    source источник


Ответы (1)


Подход 1: если вам нужно просто назначить уникальный идентификатор, вы можете использовать UUID в качестве уникального идентификатора строки:

rawRdd.mapToPair(t->new Tuple2<String,String>(t,UUID.randomUUID().toString()));

Единственным недостатком является то, что длина идентификатора составляет 36 байт.

Подход 2. Создайте централизованную систему для назначения уникального идентификатора. Я использую API на основе REST, который следует шаблону для генерации идентификатора, и каждая операция карты вызывает службу REST для получения уникального идентификатора.

Второй подход дает вам полный контроль над созданием шаблона для id.

person Rahul Sharma    schedule 13.09.2017
comment
Спасибо, не могли бы вы добавить более подробную информацию о подходе 2? - person rashmi mardur; 13.09.2017
comment
Подпишитесь на [остальный пример]( mkyong.com/spring -mvc/spring-3-rest-hello-world-example ), чтобы создать централизованный идентификатор с помощью REST и вызвать его из искры, чтобы назначить идентификатор каждой записи. - person Rahul Sharma; 14.09.2017