pyspark RDD zip、zipWithUniqueId、およびzipWithIndex操作の詳細な説明



Detailed Explanation Pyspark Rdd Zip



3、zipWithUniqueId

生成された一意のLongIDを使用してこのRDDを圧縮します。



k番目のパーティションのアイテムはIDk、n + k、2を取得します n + k、…、ここでnはパーティションの数です。したがって、ギャップが存在する可能性がありますが、このメソッドはzipWithIndexとは異なりスパークジョブをトリガーしません
パーティションに関連するk-vを返します
k、n + k、2
n + k、
nはパーティションです
kはn番目のパーティションのk番目の値です
0からカウントを開始します

Program example: a partition a=sc.parallelize(list('abczyx'),1).zipWithUniqueId().glom().collect() print(a)

結果はzipWithIndex()と同じです



Result [[('a', 0), ('b', 1), ('c', 2), ('z', 3), ('y', 4), ('x', 5)]]

2つのパーティション

Code: rdd=sc.parallelize(list('abczyx'),2) print(rdd.glom().collect()) a=rdd.zipWithUniqueId().glom().collect() print(a)

結果:

[['a', 'b', 'c'], ['z', 'y', 'x']] [[('a', 0), ('b', 2), ('c', 4)], [('z', 1), ('y', 3), ('x', 5)]]

ここに画像の説明を挿入
画像



4つのパーティション

rdd=sc.parallelize(list('45abczyx'),4) print(rdd.glom().collect()) a=rdd.zipWithUniqueId().glom().collect() print(a) [['4', '5'], ['a', 'b'], ['c', 'z'], ['y', 'x']] [[('4', 0), ('5', 4)], [('a', 1), ('b', 5)], [('c', 2), ('z', 6)], [('y', 3), ('x', 7)]]

分析:

画像