企鹅席地而坐 2019-12-10 21:15 采纳率: 0%
浏览 134

请问RDD[(String,Int)]怎么进行labelpoint,String是"aa.c"、”ty."这种,不是数字型的?

RDD[(String,Int)]怎么进行labelpoint,String是"aa.c"、”ty."这种,不是数字型的

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-07-28 22:44
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在Spark中,你可以使用map函数来对RDD中的元素进行转换。如果你想要将字符串转换为整数,你可以在你的转换函数中这样做:

    val rdd = sc.parallelize(Array("aa.c", "ty.", "zz.z"))
    rdd.map { case (key, value) => {
      val parts = key.split('.')
      if(parts.length == 2 && parts(0).matches("[a-zA-Z]+") && parts(1).matches("[0-9]+")) 
        (parts(0), Integer.parseInt(parts(1)))
      else (key, value)
    }}
    

    这段代码首先创建了一个RDD对象,然后使用map函数对每个元素执行转换。如果元素的第一个字符是字母(例如"a"或"c"),并且第二个字符是一个数字(例如"1"或"5"),那么这个元素会被添加到一个新的元组中。

    注意:这段代码假设输入的键是由两个部分组成的,第一个部分是字母,第二个部分是一个数字。如果你的键由多个部分组成,你需要修改split函数以正确处理这种情况。

    评论

报告相同问题?