Voici un exemple de données transformées en RDD :
my_data = [{'id': '001', 'name': 'Sam', 'class': "classA", 'age': 15, 'exam_score': '90'},
{'id': '002', 'name': 'Tom', 'class': "classA", 'age': 15, 'exam_score': '78'},
{'id': '003', 'name': 'Ben', 'class': "classB", 'age': 16, 'exam_score': '91'},
{'id': '004', 'name': 'Max', 'class': "classB", 'age': 16, 'exam_score': '76'},
{'id': '005', 'name': 'Ana', 'class': "classA", 'age': 15, 'exam_score': '88'},
{'id': '006', 'name': 'Ivy', 'class': "classA", 'age': 16, 'exam_score': '77'},
{'id': '007', 'name': 'Eva', 'class': "classB", 'age': 15, 'exam_score': '86'},
{'id': '008', 'name': 'Zoe', 'class': "classB", 'age': 16, 'exam_score': '89'}]
my_rdd = sc.parallelize(my_data)
La course à pied my_rdd
en tant que tel :
#>>> ParallelCollectionRDD[117] at readRDDFromFile at PythonRDD.scala:274
Et je sais que vous pouvez afficher le RDD avec my_rdd.collect()
qui renvoie :
#[{'age': 15,
# 'class': 'classA',
# 'exam_score': '90',
# 'id': '001',
# 'name': 'Sam'},
# {'age': 15,
# 'class': 'classA',
# 'exam_score': '78',
# 'id': '002',
# 'name': 'Tom'}, ...]
J'ai découvert que je pouvais accéder aux clés en exécutant la commande suivante my_rdd.keys()
mais cela revient :
#>>> PythonRDD[121] at RDD at PythonRDD.scala:53
Je veux retourner une liste de toutes les clés distinctes (je sais que les clés sont les mêmes pour chaque ligne mais pour un scénario où elles ne le sont pas, j'aimerais le savoir) dans le RDD - donc quelque chose qui ressemble à ceci :
#>>> ['id', 'name', 'class', 'age', 'exam_score']
J'ai donc supposé que je pouvais l'obtenir en exécutant la commande suivante my_rdd.keys().distinct.collect()
mais j'obtiens une erreur à la place.
Je suis encore en train d'apprendre pyspark, donc j'apprécierais vraiment que quelqu'un me donne son avis :)