获取List的所有元素而不使用迭代scala

时间:2018-01-28 22:08:28

标签: scala list apache-spark rdd

我正在使用spark我必须从List的元素创建一个RDD [(Double,Double)]

我有

val list1: List[Double] = List(16.0,5.0)

当我这样做时

val rdd = sc.parallelize (Seq(list1))

我得到了RDD[List[Double]]类型的RDD 但我想要一个RDD[(Double, Double)]类型的RDD,我可以通过这样做来实现:

val rdd = sc.parallelize (Seq((16.0,5.0)))

所以基本上,我怎样才能在Seq()内列出我列表中的所有元素而不进行迭代并做类似的事情:

val rdd = sc.parallelize (Seq((list1(*))))

1 个答案:

答案 0 :(得分:0)

您要做的就是将List[Double]成对转换为RDD[(Double, Double)]成对的对象:

sc.paralelize(
    list.sliding(2, 2)
        .filter(_.size == 2)
        .map(tup => (tup.head, tup.last))
)

您也可以使用.grouped(2)代替.sliding(2, 2),如评论中所述。