2016-08-25 17 views
1

Array [String] RDDをList [String] RDDに変換するにはどうすればよいですか?Array RDDをSparkのList RDDに変換できない

scala> val linesRDD = sc.textFile("/user/inputfiles/records.txt") 
linesRDD: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[9] at textFile at <console>:21 

scala> linesRDD.collect 
res17: Array[String] = Array(100,surender,CTS,CHN, 101,ajay,CTS,BNG, 102,kumar,TCS,BNG, 103,Ankit,CTS,CHN, 104,Sukanya,TCS,BNG 

scala> linesRDD.toList 
<console>:24: error: value toList is not a member of org.apache.spark.rdd.RDD[String] 
      linesRDD.toList 

上記のように、エラーが発生します。

しかし、私はテイクアクションを適用し、

scala> linesRDD.take(2).toList 
res19: List[String] = List(100,surender,CTS,CHN, 101,ajay,CTS,BNG) 

がどのように私はリスト[文字列] RDDにアレイ[文字列] RDDを変換しない作品ToListメソッドを適用する場合は、その下に見ることができますか?

答えて

1

例外はかなり明確で、RDDクラスに存在しないメソッドを適用しようとしています。あなたはcollect、その後toListを使用することができますしかし

error: value toList is not a member of org.apache.spark.rdd.RDD[String] linesRDD.toList

は、この問題を解決します。 BTWは、データが収集されると、そのすべてがドライバに移動され、そこに収まらない場合は例外を受け取ることを忘れないでください。

linesRDD.collect.toList 
+0

RDDに対して何らかのアクションを適用すると、データはドライバのマシンに移動されますか? –

+0

すべてのアクションはありません。たとえば、 'collect'を実行すると' take'を実行するとn個の行がドライバに移動しますが、 'count'を指定すると並列化が容易になります。 –

+0

パーフェクト。ありがとう –

関連する問題