2017-01-08 62 views
0

我有包含像下面的数据文件存储结果:过滤器和使用火花

100|hyd|xxx|32 
101|chn|yyy|98 
103|chn|abc|87 
104|hyd|nbx|56 

在这里,我想筛选基于位置(路政署,CHN)中的数据并将其存储在一个文本文件中。 我试过下面的代码。

val file=sc.textFile("/home/cloudera/abc.txt") 
val file2=file.map(line=>line.split("\\|")) 
val file3 = file2.filter(line=>line.apply(1).matches("hyd")).saveAsTextFile("/home/cloudera/hyd") 

当我检查/ home/cloudera/hyd/part-00000路径数据是以对象格式存储的。 [Ljava.lang.String; @ 679e1175

我希望数据以纯文本格式存储。

100|hyd|xxx|32 
104|hyd|nbx|56 

谢谢。

回答

2

你只是错过了将列表转换为字符串的一件事!

这可以以这种方式很容易做到:

val file=sc.textFile("/home/cloudera/abc.txt") 
val file2=file.map(line=>line.split("\\|")) 
val file3 = file2.filter(line=>line.apply(1).matches("hyd")).map(line=>line.mkString("|")).saveAsTextFile("/home/cloudera/hyd")