gpt4 book ai didi

scala - Spark Scala字符串行数组到pairRDD

转载 作者:行者123 更新时间:2023-12-04 01:37:09 24 4
gpt4 key购买 nike

如何转换这种数据

"Row-Key-001, K1, 10, A2, 20, K3, 30, B4, 42, K5, 19, C20, 20"
"Row-Key-002, X1, 20, Y6, 10, Z15, 35, X16, 42"
"Row-Key-003, L4, 30, M10, 5, N12, 38, O14, 41, P13, 8"

使用 Scala 生成一个 spark RDD,这样我们就可以得到:

Row-Key-001, K1
Row-Key-001, A2
Row-Key-001, K3
Row-Key-001, B4
Row-Key-001, K5
Row-Key-001, C20
Row-Key-002, X1
Row-Key-002, Y6
Row-Key-002, Z15
Row-Key-002, X16
Row-Key-003, L4
Row-Key-003, M10
Row-Key-003, N12
Row-Key-003, O14
Row-Key-003, P13

我认为我们可以拆分输入以获得一个行数组,然后再次拆分“,”上的每一行,然后将每行的第一个元素作为键添加到 Map,将每个备用元素作为值添加到 Map 中。

但需要帮助才能在 Scala 中实现。

最佳答案

如果你有一个包含以下数据的文本文件

Row-Key-001, K1, 10, A2, 20, K3, 30, B4, 42, K5, 19, C20, 20
Row-Key-002, X1, 20, Y6, 10, Z15, 35, X16, 42
Row-Key-003, L4, 30, M10, 5, N12, 38, O14, 41, P13, 8

然后您可以使用 sparkContext 的 textFile api 读取它

val rdd = sc.textFile("path to the text file")

它给你 rdd 数据,然后你可以使用 mapflatMap 解析它

rdd.map(_.split(", "))
.flatMap(x => x.tail.grouped(2).map(y => (x.head, y.head)))

应该给你的结果是

(Row-Key-001,K1)
(Row-Key-001,A2)
(Row-Key-001,K3)
(Row-Key-001,B4)
(Row-Key-001,K5)
(Row-Key-001,C20)
(Row-Key-002,X1)
(Row-Key-002,Y6)
(Row-Key-002,Z15)
(Row-Key-002,X16)
(Row-Key-003,L4)
(Row-Key-003,M10)
(Row-Key-003,N12)
(Row-Key-003,O14)
(Row-Key-003,P13)

希望回答对你有帮助

关于scala - Spark Scala字符串行数组到pairRDD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49199392/

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