2016-07-31 14 views
-2

私はRDD(セッションID、セッションの開始時間、セッションの長さ)を持っています。しかし、セッションIDでこのRDDを減らしてから、対応するセッションの開始時間と長さの配列を生成する必要がありますよく誰かがスカラーでコードを書く方法を教えてもらえますか? RDDにスパークスケーラのRDDの削減

私はRDDへ変換する必要がある[(セッションID、セッション開始時刻、セッションの長さ)] [(セッションID、配列[(セッション開始時刻、セッションの長さ)]) どのようにすることができこれを行う? (それが遅くなることとして、それは非常にお勧めできませんが)

答えて

-1

たぶんgroupByは助けることができる:

この場合
val a = sc.parallelize(Seq(("a", 0, 0), ("b", 1, 1), ("a", 2, 2))) 
val grouped = a.groupBy{ case(sessionID, startTime, length) => sessionID } 

groupedRDD[(String, Iterable[(String, Int, Int)]になります。次に、簡単にマップして、必要な形式にすることができます。

また、あなたはmap + groupByKeyを使用することができます。

val grouped = a.map { 
    case(sessionID, startTime, length) => (sessionID, (startTime, length)) 
}.groupByKey