2017-04-03 15 views
0

RDDが22列を超えています(したがって、フィルタリングを行うためにDataframeに変換できません)。 7〜10の範囲を得るためには4列3および10に列7の範囲を有する第二のデータフレーム、私はスライス機能に以下の方法を使用します。Spark(1.5.2) - Scala

var aux = rdd.map(_.slice(7, 10)) 

しようとしたときに私の問題が来ます3から4の間隔でこの間隔に参加してください。私は、スライス方法が1つの範囲しか受け入れないことを見ました。単一の変数で両方の範囲を取得するために、この制限をスキップする方法はありますか?

答えて

0
rdd.map(row => row.slice(3, 4) ++ row.slice(7, 10)) 
+1

プレースホルダ '_'を2回使用することはできません。 'rdd.map(row => row.slice(3、4)++ row.slice(7、10))'のようなことをしなければなりません。また、 'slice'に最後のインデックスが含まれていないことに注意してください:' _.slice(3,4) 'はインデックス' 3'だけを保持します。 –

1

私はパフォーマンスについて知らないが、あなたはこのような何か行うことができます。

rdd.map(l => ((3 to 4) ++ (7 to 10)).map(l(_))) 
+0

を、それは文字列を期待通りにはL(_)にエラーメッセージが返され、それが見つかっ伝えますintになりましたが、演算子++と2つのスライスで問題を解決することができました。 – qwerty

関連する問題