java—如何在操作中忽略rdd字符串的一部分

evrscar2  于 2021-07-14  发布在  Spark
关注(0)|答案(1)|浏览(281)

我有一个文件,每行的结构如下:

500, 1733345329, A, ugly, 500, 1230, 99
2, 1171253353, picB, wow, 1660, 20, 213
...

我的目标是操作每行的最后3位(500123099),并将is作为键附加到第一个int。在这种情况下,有没有一种方法可以使用map来提取字符串中的这些部分,并在求和等操作中使用它们?
编辑:我忘了提到我正试图用java来做这件事

mrwjdhj3

mrwjdhj31#

可以读入文本文件,用逗号分隔行,然后Map到一个元组,其中第一个整数作为键,最后三个整数的数组作为值。

val rdd = sc.textFile("filepath.txt")

val rdd2 = rdd.map(_.split(", ")).map(r => (r(0).toInt, Array(r(4), r(5), r(6)).map(_.toInt)))
// rdd2: org.apache.spark.rdd.RDD[(Int, Array[Int])]

rdd2.collect
// Array[(Int, Array[Int])] = Array((500,Array(500, 1230, 99)), (2,Array(1660, 20, 213)))

相关问题