Noa*_*ish 5 scala vector distributed-computing apache-spark rdd
假设我有一个包含(Int,Int)元组的RDD.我希望把它变成一个Vector,其中元组中的第一个Int是索引,第二个是值.
任何想法我该怎么做?
我更新了我的问题并添加了我的解决方案以澄清:我的RDD已经被密钥减少了,并且密钥的数量是已知的.我想要一个向量来更新单个累加器而不是多个累加器.
我的最终解决方案是:
reducedStream.foreachRDD(rdd => rdd.collect({case (x: Int,y: Int) => {
val v = Array(0,0,0,0)
v(x) = y
accumulator += new Vector(v)
}}))
Run Code Online (Sandbox Code Playgroud)
Vector
在文档中使用累加器示例.
rdd.collectAsMap.foldLeft(Vector[Int]()){case (acc, (k,v)) => acc updated (k, v)}
Run Code Online (Sandbox Code Playgroud)
将 RDD 转换为 Map。然后迭代它,构建一个向量。
您可以使用 justtcollect(),但如果具有相同键的元组有很多重复,则内存可能不适合。
归档时间: |
|
查看次数: |
1385 次 |
最近记录: |