2016-07-01 9 views
0

私はScalaでSpark Jobを実行していますが、私は入力ファイルの解析に苦しんでいます。私はsparkジョブを実行するためにscalaファイルを解析するのに助けが必要です

入力ファイルは(TAB区切り)= 26

日付= 20160402名=ジョン・年齢= 33

I

日付= 20160701名=マイク年齢、何かのようですそれを解析して、キーではなく値だけを抽出したい場合は、

20160701 mike 26

20160402ヨハネ33これはSCALAで達成することができますどのように

?私が使用している

SCALAバージョン:2.11

+0

何を試しましたか?今提示されているように、これは「コードをつかむ」問題です。あなたのコードを含めるように質問を編集し、特定の質問をしてください。また、これはスパークとはまったく関係がないことに注意してください。文字列の解析に関するものです。 –

答えて

1

あなたはCSVParserを(使用することができます)、あなたはキーの場所を、それが

1

テストは簡単できれいなことがわかっていますデータ

val data = "date=20160701\tname=mike\tage=26\ndate=20160402 name=john\tage=33\n" 

尋ねたことを行う1つの文

我々は

rdd.collect().foreach(r=>println(r.mkString(","))) 
// 20160701,mike,26 
// 20160402,john,33 

を得たもの

val rdd = sc.parallelize(data.split('\n')) 
      .map(_.split('\t') // split into key=value 
        .map(_.split('=')(1))) // split those at "=" and select only the value 

表示しかし、実際のコードのためにこれをしません。データフォーマットエラーなどで非常に壊れやすいです。Narendra Parmarが示唆しているように、代わりにCSVParserを使用してください。

1

val rdd = sc.textFile() rdd.map(x => x.split( "\ t"))。map(x => x.split( "=")(1))。map (x => x.mkstring( "\ t"))。saveAsTextFile( "")

関連する問題