Bir RDD'deki öğelerin sırasını rastgele sıralamaya çalışıyorum. Şu anki yaklaşımım, öğelerin karıştırılmış tam sayıların bir RDD'si ile sıkıştırılması ve daha sonra bu tam sayılarla birleştirilmesidir. Bununla birlikte, pyspark sadece 100000000 tam sayı ile düşmektedir. Aşağıdaki kodu kullanıyorum.Pyspark: shuffle RDD
Soruma şudur: rastgele dizinle sıkıştırmak veya başka bir şekilde karıştırmak için daha iyi bir yol var mı?
Rasgele bir anahtarla sıralama yapmayı denedim, ancak çalışıyor.
def random_indices(n):
"""
return an iterable of random indices in range(0,n)
"""
indices = range(n)
random.shuffle(indices)
return indices
şu pyspark olur:
Using Python version 2.7.3 (default, Jun 22 2015 19:33:41)
SparkContext available as sc.
>>> import clean
>>> clean.sc = sc
>>> clean.random_indices(100000000)
Killed
Teşekkürler, bu yararlıdır. Anahtarların gerçekten benzersiz olmasına ihtiyacım var. – Marcin
Başka gereksiniminiz var mı? Eğer değilse, daha sonra zipWithIndex 'zipWithUniqueId' yazabilirsiniz. Başka bir dönüşüm ekliyor, ancak son derece pahalı değil. – zero323
Hem rastgele hem de benzersiz olması için anahtarlara ihtiyacım var. Rastgele bir anahtar ile sıralayabilirim, ancak bu oldukça yavaş olduğunu kanıtlıyor. – Marcin