2017-06-10 20 views
1

私はRDD[List[String]]RDD[String]に変換する必要があるspark-scalaのシナリオを持っています。RDD [List [String]]をRDDに変換する方法

どうすればいいですか?

@eric、なぜ質問がトピックから外れているのか分かりますか?

+0

あなたが答えを出すことさえできるようにするために十分な情報を私たちに与えてくれなかったので、話題にはならない理由があります。 –

答えて

5

rddでflatMap(rdd.flatMap(x => x))操作を使用します。

scala> rdd.flatMap(x => x) 
res1: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[2] at flatMap at <console>:27 

scala> val rdd = sc.parallelize(Seq(List("1","2","3"), List("4", "5", "6"))) 
rdd: org.apache.spark.rdd.RDD[List[String]] = ParallelCollectionRDD[3] at parallelize at <console>:24 

scala> val result = rdd.flatMap(x => x) 
result: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[6] at flatMap at <console>:26 

scala> result.collect() 
res7: Array[String] = Array(1, 2, 3, 4, 5, 6) 

、以下のようにコメントに要求されるようにBidErrorケースクラスを使用してERRORと文字列の作成とメッセージのためのフィルタ。

result.filter(_.contains("ERROR")).map(BidError("2017-06-09",_).toString) 
+0

ありがとうございました....もう1つの問題があります。文字列に "ERROR"が含まれている場合は、文字列のリストをフィルタリングする必要があります。そうなら、以下のcaseクラス/// caseクラスBidError(date: String、errorMessage:String){ def toString:String = "" $ date、$ errorMessage " }これをtoStringすなわちRDD [string]に戻します...ご返信ありがとうございました – user3252097

+0

@ user3252097 BidErrorクラスを作成しますか?すなわち、日付の価値はどうあるべきですか? –

+0

@ user3252097サンプルデータを使用して質問を更新すると、悪意のある人があなたにより良い回答をするのに役立ちます。 –

関連する問題