2017-01-08 8 views
0

私は以下のようなデータを含むファイルを持っていますを使用して、結果を格納します。フィルタと火花

ここで私は場所(HYD、CHN)に基づいてデータをフィルタリングし、テキストファイルに保存したい
100|hyd|xxx|32 
101|chn|yyy|98 
103|chn|abc|87 
104|hyd|nbx|56 

。 私は以下のコードを試しました。

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

あなたは、リストをStringに変換しているものが1つだけ欠落しています。

これは簡単にこのような方法で行うことができます。

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