Spark RDD - Cartographie avec des arguments supplémentaires
Est-il possible de passer des arguments supplémentaires à la fonction de mappage dans pySpark?
Plus précisément, j'ai le code suivant recette:
raw_data_rdd = sc.textFile("data.json", use_unicode=True)
json_data_rdd = raw_data_rdd.map(lambda line: json.loads(line))
mapped_rdd = json_data_rdd.flatMap(processDataLine)
La fonction processDataLine
prend des arguments supplémentaires en plus de l'objet JSON, comme:
def processDataLine(dataline, arg1, arg2)
Comment puis-je passer les arguments supplémentaires arg1
et arg2
à la flaMap
fonction?
- Pensez à lire this
- Merci @AvihooMamka. Comme je l'ai compris-je besoin pour utiliser la fonction partielle. Mais je n'ai pas comment l'appliquer à mon cas?
- Pourquoi ne pas envoyer à la fonction partielle de la processDataLine fonction et les arguments que vous voulez après sa diffusion?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser une fonction anonyme, soit directement dans un
flatMap
ou de curry
processDataLine
Vous pouvez générer
processDataLine
comme ceci:toolz
bibliothèque fournit utilecurry
décorateur:Remarque que j'ai poussé à
dataline
argument à la dernière position. Il n'est pas nécessaire, mais de cette façon, nous n'avons pas à utiliser le mot clé args.Enfin, il y a
functools.partielle
déjà mentionné par Avihoo Mamka dans les commentaires.