gpt4 book ai didi

scala - 如何将已知的结构化 RDD 转换为 Vector

转载 作者:行者123 更新时间:2023-12-04 18:06:11 25 4
gpt4 key购买 nike

假设我有一个包含 (Int, Int) 元组的 RDD。
我希望把它变成一个 Vector,其中元组中的第一个 Int 是索引,第二个是值。

任何想法我该怎么做?

我更新了我的问题并添加了我的解决方案以澄清:
我的RDD已经被key减少了,key的个数是已知的。
我想要一个向量来更新单个累加器而不是多个累加器。

我的最终解决方案是:

reducedStream.foreachRDD(rdd => rdd.collect({case (x: Int,y: Int) => {
val v = Array(0,0,0,0)
v(x) = y
accumulator += new Vector(v)
}}))

使用 Vector来自文档中的累加器示例。

最佳答案

rdd.collectAsMap.foldLeft(Vector[Int]()){case (acc, (k,v)) => acc updated (k, v)}

将 RDD 变成 Map。然后迭代它,边走边构建一个 Vector。

您可以使用 justt collect(),但是如果具有相同键的元组有很多重复可能不适合内存。

关于scala - 如何将已知的结构化 RDD 转换为 Vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27555604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com