2016-06-22 9 views
1

たとえば、Scala RDDが10000個の要素で構成されている場合、各要素を1つずつ取り上げて処理したいと考えています。それ、どうやったら出来るの?私はtake(i).drop(i-1)を使用しようとしましたが、それは非常に時間がかかります。あなたがコメントで言ったことによるRDDを効率的にトラバースする方法

+0

'RDD'や' foreach'で 'map'を使ってみませんか? – meucaa

+0

私はスカラを使用します。 exeampeの場合、私のrdd型はorg.apache.spark.rdd.RDDです。(String、Iterable [(String、String、String、String)])]、私はちょうどすべての要素を取得してから別の処理をしたいだけです。 –

+0

'' Tuple(String、Iterable [(String、String、String、String)]) 'または' Iterable'を使って反復したいですか? – meucaa

答えて

1

yourRDD.map(tuple => tuple._2.map(elem => doSomething(elem))) 

最初mapは、それは私が変数tupleと呼ばれる理由は、その後、すべてのtupleのために、我々は第二を取得している、あなたのRDDの内部タプルを反復します要素._2mapを適用してIterableのすべての要素を繰り返します。これは変数elemを呼び出した理由です。 doSomething()は、各要素に適用する任意のランダム関数です。

関連する問題