タプルごとに一意の ID を生成する必要がある [ETL ディメンション処理での代理キーの生成に相当]
def attachLongSurrogateKeys[T: ClassTag](dim: RDD[T], nextSurrogateKey: Long): (RDD[(T, Long)], Long) = {
val dimensionWithSK = dim.zipWithUniqueId.map { case (x, y) => (x, y + nextSurrogateKey) }
val newSurrogateKey = dimensionWithSK.map { case (row, sk) => sk }.max
(dimensionWithSK, newSurrogateKey)
}
私は40億行を扱います。生成された代理キーの最大値を取得する 3 行目のパフォーマンスが少し心配です。
同じことを達成するためのより良いクリーンな方法はありますか?