【发布时间】:2018-02-26 12:27:43
【问题描述】:
有这样的数据框,它只有一列。每一行都是这样的:
A:6,B:5,C:2
A:8,C:7,D:5,E:2,F:1
A:12,F:7,G:6,W:1
B:13,H:4,I:2
....
例如:现在我创建一个只有四行的数据框:
import sqlContext.implicits._
val df = Seq(
(A:6,B:5,C:2),
(A:8,C:7,D:5,E:2,F:1),
(A:12,F:7,G:6,W:1),
(B:13,H:4,I:2)
).toDF("key_value")
每一行至少有三个元素,然后每个元素用逗号分隔。每个字母后面是它对应的值。并且每一行的元素已经按照值的降序排列。现在我要提取组合每行的前三个值,将它们合并在一起,并将相同的字母值添加在一起,使它们显示为:
A:###
B:###
C:###
.....
PS:每一行只有一个元素。我该如何编写这个函数?请帮助我!
【问题讨论】:
-
您的要求建议使用 rdd 而不是数据框。所以不要费心转换成数据框。只需在 rdd 中进行计算即可。
-
我应该如何处理 rdd?Thx!
-
你能用你如何创建数据框来更新这个问题吗?
-
好的。我已经更新了。
-
所以每一行都是一个类似
"A:6,B:5,C:2"的字符串,对吧?
标签: scala apache-spark dataframe