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函数以正确处理这种情况。解决 无用评论 打赏 举报