【问题标题】:How to disregard part of an RDD string for operations如何忽略 RDD 字符串的一部分进行操作
【发布时间】:2021-07-06 03:36:21
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java apache-spark rdd


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回复,我忘了说我是用 Java 做的。我理解你提出的过程,但我不知道如何在 Java 中在语法上执行此逻辑。
    猜你喜欢
    • 1970-01-01
    • 2010-09-20
    • 2021-08-27
    • 1970-01-01
    • 2010-09-05
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    • 1970-01-01
    相关资源
    最近更新 更多