У нас есть uuid
udf
:
import java.util.UUID
val idUdf = udf(() => idgen.incrementAndGet.toString + "_" + UUID.randomUUID)
spark.udf.register("idgen", idUdf)
Проблема заключается в том, что при запуске count
, show
или write
каждый из них получает различное значение результата udf
.
df.count() // generates a UUID for each row
df.show() // regenerates a UUID for each row
df.write.parquet(path) // .. you get the picture ..
Какие подходы можно использовать для сохранения одного результата uuid
для данной строки? Первой мыслью будет вызвать удаленное Key-Value
хранилище, используя некоторую уникальную комбинацию других стабильных полей в каждом столбце. Это, конечно, дорого как из-за поиска для каждой строки, так и из-за конфигурации и обслуживания удаленного KV Store
. Существуют ли другие механизмы для обеспечения стабильности этих уникальных столбцов идентификаторов?