-1
votes

Réduisez-vous une liste de listes à Pyspark

Je suis nouveau à Pyspark et jusqu'à présent, il est un peu difficile de comprendre la façon dont cela fonctionne spécialement lorsque vous utilisez des bibliothèques comme des pandas. Mais il semble que la façon d'aller pour de grandes données.

Pour mon travail d'ETL actuel, j'ai les éléments suivants: p>

Ceci est mon RDD: P>

rdd = rdd.flatMap(lambda x:x).reduceByKey(list)


0 commentaires

3 Réponses :


0
votes

Comme vous êtes nouveau pour susciter, vous ne pouvez pas au courant de Spark Dataframe. DataFrame est concept avancé par rapport à RDD. Ici, j'ai résolu votre problème avec Pyspark Dataframe. Jetez un coup d'œil à cela, n'hésitez pas à apprendre l'étincelle Dataframe. XXX


4 commentaires

Bonjour Pradeep, merci beaucoup, il résout presque mon problème, la seule partie à laquelle il me manque, c'est que j'ai une liste de listes et que chaque liste est une ligne de mon dernier Dataframe. IE: [[("SMSG", "BKT"), ("SQNR", "00000004")], [("SMSG", "BKS"), ("sqnr", "00000006")]]] Résultat: + ------ + -------- + | SMSG | Sqnr | + ------ + -------- + | BKT | 00000004 | | BKS | 00000005 | + ------ + --------- +


Un autre problème que j'ai eu lors de la création du DF, est que certaines de mes valeurs ne sont pas str. Est-ce un problème? Parce que j'ai eu des erreurs dans le passé où je pense que Pyspark s'attendait à un schéma afin de créer le DF. Devrais-je donner un schéma Todf avec le type de chaque colonne? Si oui, je ne connais pas toute la colonne à l'avance. Chaque liste peut avoir des colonnes différentes. Dans Pandas, il m'a été possible car vous pouvez ajouter de manière dynamique les colonnes.


@Mehdimansouri, essayez de cette façon ils ont mentionné dans la section ANS.


Bonjour Pradeep, j'ai essayé la solution fournie dans le lien. Le Dataframe est créé avec succès, merci.



0
votes

Merci beaucoup pour le lien, j'ai follwed la solution fournie. Le Dataframe a été créé avec succès, ce qui est génial.

print(df.count())

15723


0 commentaires

0
votes

Vous pouvez essayer Regexp_replace pour votre cas. Vérifiez le cas exemple ci-dessous,

df1.withColumn("c0", regexp_replace("_c0", "[()']", "")).withColumn("c1", regexp_replace("_c1", "\)", "")).show()

+----+---+---+---+
| _c0|_c1| c0| c1|
+----+---+---+---+
|('a'| 2)|  a|  2|
|('b'| 4)|  b|  4|
|('c'| 6)|  c|  6|
+----+---+---+---+


0 commentaires