2016-07-28 2 views
-5

J'ai ce morceau de code à ScalaPython Equivalence du Code Scala de Spark

val file = sc.textFile(filelocation) 

    //Inital edge list that is to be passed to Iterate function 
    var edges : RDD[(Int, Int)] = file.flatMap{ 
     s => val nodes = s.split("\\s+") 
     Seq((nodes(0).toInt, nodes(1).toInt)) 
    } 

    edges.collect() 

Je lis un fichier local dont l'entrée est

1 0 
0 3 
3 4 
2 4 

La sortie du code est la suivante:

Array[(Int, Int)] = Array((1,0), (0,3), (3,4), (2,4)) 

Je veux réaliser la même chose en python. Je fais ce moment

filelocation = "/FileStore/tables/nr8rkr051469528365715/cc_test-3be20.txt" 
file = sc.textFile(filelocation) 
def tokenize(text): 
    row = text.split('\\s+') 
    return row 

result = file.flatMap(tokenize) 

Et je reçois cela comme une sortie

Out[5]: [u'1 0', u'0 3', u'3 4', u'2 4'] 
+1

changez simplement votre chaîne fractionnée en "" un seul espace. En python, le split reçoit une chaîne. – Aquiles

+0

J'ai essayé ce @Aquiles. Ça me donnerait ça comme sortie [22]: [u'1 ', u'0', u'0 ', u'3', u'3 ', u'4', u'2 ', u '4'] Mais je veux quelque chose liste une liste de tuples pour chaque ligne dans le fichier – jems

+0

c'est une solution simple mais je ne sais pas si c'est ce que vous voulez, mais vous pouvez toujours essayer de retourner [row] ou list (row) et voir qu'est-ce que cela fait ... Je n'ai pas la bibliothèque sc donc je ne peux pas tester – Aquiles

Répondre

0

Modifier le flatMap à map

Cela va travailler!