2015-08-30 23 views
0

给定一个TSV文件,取每行中的前两列和返回以下:数组[地图[column_one:字符串,column_two:字符串]]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 

其返回数组[列表[字符串]:

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

只是不知道如何在列表[字符串]转换成地图。

回答

0

我想这可能会做你想要什么:

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