Próbuję randomizować kolejność elementów w RDD. Moje obecne podejście polega na zip elementach z RDD z przetasowanymi liczbami całkowitymi, a następnie łączenie przez te liczby całkowite.Pyspark: shuffle RDD
Jednak, pyspark przewyższa tylko 100000000 liczb całkowitych. Używam poniższego kodu.
Moje pytanie brzmi: czy istnieje lepszy sposób na zip z losowym indeksem lub w inny sposób shuffle?
Próbowałem sortować według losowego klucza, który działa, ale działa wolno.
def random_indices(n):
"""
return an iterable of random indices in range(0,n)
"""
indices = range(n)
random.shuffle(indices)
return indices
dodaje się dzieje w pyspark:
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
Dzięki, jest to przydatne. Potrzebuję kluczy, żeby były unikalne. – Marcin
Czy masz tutaj inne wymagania? Bo jeśli nie, możesz po prostu 'zipWithIndex'' zipWithUniqueId' później. Dodaje kolejną transformację, ale nie jest wyjątkowo kosztowna. – zero323
Potrzebuję kluczy, aby były one losowo zamawiane i unikalne. Mogę sortować według losowego klucza, ale okazuje się to dość powolne. – Marcin