当前位置: 首页 > 知识库问答 >
问题:

如何忽略部分RDD字符串进行操作

魏硕
2023-03-14

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

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

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

编辑:我忘了说我正在Java尝试这样做

共有1个答案

裴焱
2023-03-14

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

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)))
 类似资料:
  • 我正在尝试在文本中查找html标签,如下所示: 但是颜色部分可以改变(比如#bbbbbb)…我想我可以为此使用正则表达式,对吗?但是我不确定我怎么能忽略它的颜色部分… 你能帮我吗?这可能吗? 非常感谢你

  • 我想对字符串执行子字符串操作。我有字符串<代码> 我尝试了finame=mainname。子字符串(0,mainname.lastIndexOf(“.”) 但我得到了<代码>

  • 问题内容: 我有一个具有以下格式的字符串列表: …,我想根据零件的字母顺序对列表进行排序。我将如何去做呢? 问题答案: 要更改排序键,使用的参数: 与以下方法相同: 请注意,如问题中所述,这将是字母排序,因此对于2位数字的组件,它不会将它们解释为数字,例如,“ 11”将出现在“ 2”之前。

  • 给定以下字符串: 我在打电话 无论如何,长度是9,而不是应该的13。 尽管如此,如果我以这种方式修改所述字符串: 长度为13!怎么会?似乎java进行了某种优化,这不是必需的,因为字符串的这些部分可以在其他上下文中填充。。。

  • 问题内容: 给定以下字符串: 我在打电话 无论如何,长度是9,而不是应该的13。 不过,如果我以这种方式修改所说的字符串: 长度是13!怎么发生的?似乎Java进行了某种优化,这不是必需的,因为可以在其他上下文中填充字符串的那些部分… 问题答案: 默认情况下,从结果数组中删除结尾的空字符串。要关闭此机制,请使用负数限制,例如 更多细节: 内部返回此方法的结果,您可以在此方法的文档中找到(强调我的)

  • 问题内容: 是否可以确定String是否包含字符串模式?我想知道当字符不区分大小写时是否有可能。如果是这样,怎么办? 问题答案: 您可以使用 检查CharSequence是否包含搜索CharSequence(不区分大小写),处理为null。不区分大小写由String.equalsIgnoreCase(String)定义。 空的CharSequence将返回false。 这将比regex更好,因为