У меня есть файл, как это:питона MapReduce конвертировать текст в массив
0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 1,1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 2,1,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 3,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 4,1,1,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
И я хочу, чтобы сделать первый элемент, ключ и деталь остальной его значение, массив из них. Мой код работы это не распространяется:
mRDD = rRDD.map(lambda line: (line[0], (np.array(int(line))))).collect()
Мой желаемый результат:
(3, (1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0))
(4, (1,1,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0))
Мой последний подход:
import os.path
import numpy as np
baseDir = os.path.join('data')
inputPath = os.path.join('mydata', 'matriz_reglas_test.csv')
fileName = os.path.join(baseDir, inputPath)
reglasRDD = (sc.textFile(fileName, 8)
.cache()
)
regRDD = reglasRDD.map(lambda line: line.split('\n'))
print regRDD.take(5)
movRDD = regRDD.map(lambda line: (line[0], (int(x) for x in line[1:] if x))).collect()
print movRDD.take(5)
И ошибка:
PicklingError: Can't pickle <type 'generator'>: attribute lookup __builtin__.generator failed
Любая помощь оценили.
RDD.map(). Collect() часть предназначена для распараллеливания с помощью Spark. Реальный файл данных намного больше. – jag
Я вижу. Подумайте, почему ваш код выше не работает? Какая у вас ошибка? Или вы просто не получаете то, что хотите, и если да, то что вы получаете? Это может помочь вам получить больше ответов. – Kreger51