В Spark, как мне сложить мой RDD на пары? - PullRequest
0 голосов
/ 05 июля 2018

Предположим, у меня есть RDD целых чисел, который выглядит следующим образом:

(1,2,3,4,5,6,7,8)

(т. Е. В СДР восемь пунктов)

и я хочу сложить СДР на пары так, чтобы это выглядело так:

((1,2),(3,4),(5,6),(7,8)

(т. Е. В СДР четыре элемента).

Я думал, что может быть функция разделения или агрегата, но, похоже, ее нет.

У меня вопрос: В спарк, как мне сложить мой RDD на пары?

1 Ответ

0 голосов
/ 05 июля 2018

Это именно то, что делает функция sliding, которая доступна в mllib Библиотека

// Import the mllib library
scala> import org.apache.spark.mllib.rdd.RDDFunctions._
import org.apache.spark.mllib.rdd.RDDFunctions._

scala> val rdd = spark.sparkContext.parallelize(Seq(1,2,3,4,5,6,7,8))
rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[10] at parallelize at 
 <console>:29

scala> rdd.sliding(2,2).map(x => (x(0), x(1))).foreach(println)
(1,2)
(5,6)
(3,4)
(7,8)

Или лучше

rdd.sliding(2,2).map{case Array(x,y) => (x,y) }.foreach(println)

Надеюсь, это помогло!

...