2016-07-28 3 views
-5

У меня есть этот кусок кода в ScalaPython Эквивалентность Scala кодекса Спарк

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() 

Я читаю локальный файл, вход

1 0 
0 3 
3 4 
2 4 

Выходной код:

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

Я хочу достичь такой же вещи в python. Я делаю это прямо сейчас

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) 

И я получаю это как выход

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

просто измените свою разделенную строку на «» на одно пространство. В python split получает строку. – Aquiles

+0

Я пробовал этот @Aquiles. Это дало бы мне это как выход Out [22]: [u'1 ', u'0', u'0 ', u'3', u'3 ', u'4', u'2 ', u '4'] Но я хочу, чтобы что-то список список кортежей для каждой строки в файле – jems

+0

это просто исправить, но я не знаю, если это то, что вы хотите, но вы всегда можете попробовать вернуться [строка] или список (строка) и посмотреть что это делает ... У меня нет библиотеки sc, поэтому я не могу проверить – Aquiles

ответ

0

Измените flatMap на map

Это будет работать!

Смежные вопросы