首页 > 解决方案 > 如何忽略 RDD 字符串的一部分进行操作

问题描述

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

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

我的目标是操纵每行的最后 3 位数字(500、1230、99)并附加到第一个 int 作为键。在这种情况下,有没有一种方法可以使用 map ,我可以提取字符串的一部分并将它们用于诸如求和之类的操作中?

编辑:我忘了提到我正在尝试在 Java 中执行此操作

标签: javaapache-sparkrdd

解决方案


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

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)))

推荐阅读