gpt4 book ai didi

scala - Spark - 按输出 (RDD) 从组中删除 CompactBuffer

转载 作者:可可西里 更新时间:2023-11-01 15:11:23 28 4
gpt4 key购买 nike

问题陈述

RDD分组后需要格式化Spark输出(移除CompactBuffer)

输入

Header1^Header2
A^4B
A^11A
B^7A
C^6DF
C^7DS

期望的输出

(A,(4B,11A))
(B,(7A))
(C,(6DF,7DS))

我尝试了什么

val records = sc.textFIle("/user/chronicles/test.txt").map(x => {
val y = x.split("\\^",-1)
(y(0).trim(),
y(1).trim())
}).groupBy(x => x._1)

records.foreach(println)

输出

 (A,CompactBuffer((4B,11A)))
(B,CompactBuffer((7A)))
(C,CompactBuffer((6DF,7DS)))

在我的解决方案中,我可以通过使用 foreach 读取每个元素来删除“CompactBuffer”,然后使用替换命令替换单词和额外的符号

有没有其他方法可以用来格式化数据。

注意:我已经关注:“how to remove compactbuffer in spark output”- mkString 在这种情况下不起作用

最佳答案

如果我没有正确理解你的问题,那么你去吧:

val data = sc.parallelize(Seq("Header1^Header2", "A^4B", "A^11A", "B^7A", "C^6DF", "C^7DS"))
.map(x => {
val y = x.split("\\^", -1)
(y(0).trim(), y(1).trim())
}).groupBy(x => x._1).mapValues(_.map(_._2).mkString("(",",",")"))

data.collect.foreach(println)
// (A,(4B,11A))
// (B,(7A))
// (C,(6DF,7DS))
// (Header1,(Header2))

要删除 header ,您可以使用过滤器。我不确定这是否是这里的问题。如果是这样,请发表评论,以便我进行更正。

关于scala - Spark - 按输出 (RDD) 从组中删除 CompactBuffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37517127/

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