2015-08-30 1 views
0

Учитывая TSV-файл, возьмите первые две колонки в каждой строке и возвращает следующее: Array [Карта [column_one: String, column_two: String]]Scala: Учитывая TSV-файл, возьмите первые две колонки в каждой строке и верните следующее: Array [Map [column_one: String, column_two: String]]

Пример файла:

RowOneColumnOne RowOneColumnTwo RowOneColumnThree 
RowTwoColumnOne RowTwoColumnTwo RowTwoColumnThree 

Результат:

[ 
    RowOneColumnOne: RowOneColumnTwo, 
    RowTwoColumnTwo: RowTwoColumnTwo 
] 

Пробовал это:

var keyword = sc.textFile("hdfs://nameservice/some_tsv_file.txt") 
val keywords = keyword.map(x => x.split("\t").take(2).toList).collect().distinct 

который возвратил массив [List [String]]:

[ 
    [RowOneColumnOne, RowOneColumnTwo], 
    [RowTwoColumnTwo, RowTwoColumnTwo] 
] 

Просто не знаю, как преобразовать список [String] к карте.

ответ

0

Я думаю, что это может делать то, что вы хотите:

val keywords = keyword.map(x => x.split("\t").toList).collect { 
    case y :: z :: _ => Map((y -> z)) 
}.distinct 
Смежные вопросы