Mam rdd, który zawiera pary wartości kluczy. Są tylko 3 klucze i chciałbym napisać wszystkie elementy dla danego klucza do pliku tekstowego. Obecnie robię to w 3 przejściach, ale chciałem zobaczyć, czy mógłbym to zrobić za jednym razem.Zapisywanie RDD do wielu plików w PySpark
Oto co mam do tej pory:
# I have an rdd (called my_rdd) such that a record is a key value pair, e.g.:
# ('data_set_1','value1,value2,value3,...,value100')
my_rdd.cache()
my_keys = ['data_set_1','data_set_2','data_set_3']
for key in my_keys:
my_rdd.filter(lambda l: l[0] == key).map(lambda l: l[1]).saveAsTextFile(my_path+'/'+key)
to działa, jednak buforowanie i iteracja go trzy razy może być procesem długotrwałym. Zastanawiam się, czy istnieje sposób na jednoczesne zapisanie wszystkich trzech plików?
Jest to problem dla tego : https://issues.apache.org/jira/browse/SPARK-3533. Obejście zamieszczono tutaj: http://stackoverflow.com/questions/23995040/write-to-multiple-outputs-by-key-spark-one-spark-job –