scala – 如何将已知的结构化RDD转换为Vector
发布时间:2020-12-16 09:58:15 所属栏目:安全 来源:网络整理
导读:假设我有一个包含(Int,Int)元组的RDD. 我希望把它变成一个Vector,其中元组中的第一个Int是索引,第二个是值. 任何想法我该怎么做? 我更新了我的问题并添加了我的解决方案以澄清: 我的RDD已经被密钥减少了,密钥的数量是已知的. 我想要一个向量来更新单个累加
假设我有一个包含(Int,Int)元组的RDD.
我希望把它变成一个Vector,其中元组中的第一个Int是索引,第二个是值. 任何想法我该怎么做? 我更新了我的问题并添加了我的解决方案以澄清: 我的最终解决方案是: reducedStream.foreachRDD(rdd => rdd.collect({case (x: Int,y: Int) => { val v = Array(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(),但是如果有很多重复的元组具有可能不适合内存的相同键. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |