2015-08-30 4 views
0

Étant donné un fichier TSV, prenez les deux premières colonnes de chaque ligne et retourner les éléments suivants: Array [Carte [column_one: String, column_two: String]]Scala: Dans un fichier TSV, prenez les deux premières colonnes dans chaque ligne et retournez ce qui suit: Array [Map [column_one: String, column_two: String]]

Exemple de fichier:

RowOneColumnOne RowOneColumnTwo RowOneColumnThree 
RowTwoColumnOne RowTwoColumnTwo RowTwoColumnThree 

Résultat:

[ 
    RowOneColumnOne: RowOneColumnTwo, 
    RowTwoColumnTwo: RowTwoColumnTwo 
] 

Essayé ceci:

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

qui retourne un tableau [Liste [chaîne]]:

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

pas sûr comment convertir la liste [chaîne] à la carte.

Répondre

0

Je pense que cela pourrait faire ce que vous voulez:

val keywords = keyword.map(x => x.split("\t").toList).collect { 
    case y :: z :: _ => Map((y -> z)) 
}.distinct