使用spark过滤并存储结果

时间:2017-01-08 07:36:49

标签: scala apache-spark

我的文件包含如下数据:

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

这里我想根据位置(hyd,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

谢谢。

1 个答案:

答案 0 :(得分:2)

你只是缺少一个将列表转换为String的东西!

这可以通过这种方式轻松完成:

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")