2016-10-27 3 views
2

Ниже код извлекает данные из файла и разбивает данные с помощью разделителя запятой.Преобразование Spark Map

val a=sc.textFile("/sparkinput") 
val b=a.map(x=>x.split(",")) 
b.collect 

Выход:

Array(Array(1, Brandon Buckner, avil, female, 525), Array(2, Veda Hopkins, avil, male, 633), Array(3, Zia Underwood, paracetamol, male, 980), Array(4, Austin Mayer, paracetamol, female, 338), Array(5, Mara Higgins, avil, female, 153), Array(6, Sybill Crosby, avil, male, 193), Array(7, Tyler Rosales, paracetamol, male, 778), Array(8, Ivan Hale, avil, female, 454), Array(9, Alika Gilmore, paracetamol, female, 833), Array(10, Len Burgess, metacin, male, 325)) 


b.saveasTextFile("/sparkoutput") 

Когда я сохранить вывод в текстовый файл не знаю, почему я получаю данные, как показано ниже.
Выход:

[Ljava.lang.String;@45968fc2 

[Ljava.lang.String;@6b3012a2 

[Ljava.lang.String;@211780a8 

[Ljava.lang.String;@dffa691 

[Ljava.lang.String;@b1080c5 

[Ljava.lang.String;@68760b2f 

[Ljava.lang.String;@1dd8703d 

Я новичок в искру, пожалуйста, помогите мне в этом.

ответ

1

Я думаю, что при использовании «saveasTextFile» в массиве массива это может привести к написанию объекта Java вместо строки.

Я думаю, что использование flatMap вместо карты может помочь вам получить строки в вашем выходном файле.

см: https://stackoverflow.com/a/22510434/5088142

+0

Я получил ожидаемый результат, когда я использую flatmap, но я так хотел бы знать, почему я не получил ожидать за map.Now я получил ..thanks ответа !! – vivman

+0

@Yaron, если я могу спросить о вашем предположении заменить 'collect' на' collect() ', почему? – eliasah

+0

@eliasah - Я удалил свой комментарий о сборе vs collect() – Yaron