2016-04-03 3 views
0

Объясню проблему с первым упоминанием кода.Строка замените в Spark RDD

numPartitions = 2 
rawData1 = sc.textFile('train_new.csv', numPartitions,use_unicode=False) 


rawData1.take(1) 

['1,0,0,0,0,0,0,0,0,0,0,1,0,0,5,0,0,0,0,0,0,0,0,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,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,0,0,0,0,0,0,0,0,0,0,0,4,0,9,0,0,0,0,0,Class_2'] 

Теперь я хочу, чтобы заменить Class_2 в 2

после замены ответ должен быть

['1,0,0,0,0,0,0,0,0,0,0,1,0,0,5,0,0,0,0,0,0,0,0,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,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,0,0,0,0,0,0,0,0,0,0,0,4,0,9,0,0,0,0,0,2'] 

После того, как я получить его для этой строки, я буду выполнять операцию для всей информации комплект

Дополнительная информация: Aashish

ответ

0
result = rawData1.map(lambda element: ','.join(element.split(',')[:-1] + ['2'])) 

следует более чем это сделать. Он работает путем сопоставления каждого элемента в вашем RDD с функцией lambda и возвращает новый набор данных.

Элемент разбивается на массив, используя разделитель ',', нарезанный, чтобы опустить последний элемент, а затем сделан для получения дополнительного элемента ['2'], после чего мы объединяем массив вместе, используя ','.

Более сложные конструкции могут быть выполнены путем соответствующего изменения лямбда-функции.