微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

获取Spark中RDD的索引

如何解决获取Spark中RDD的索引

我有一个 RDD RDD[Employee] ,其中Employee中的列是id,first_name,last_name,dob 我想用索引值RDD[Employee]设置id的值。我怎么做? 我可以使用rdd.zipwithIndex()获取索引,但是我不知道下一步该怎么做。

解决方法

您需要将每个元素映射到新的所需元素:

rdd.zipWithIndex()
   .map{case(elem,index) => elem.copy(id = index.toInt)}

如果您的Employee类不是案例类,或者缺少copy方法,您可以这样做:

rdd.zipWithIndex()
   .map{case(elem,index) => Employee(index.toInt,elem.first_name,elem.last_name)}
  • 首先,使用zipWithIndex获得每一行的索引,这是 将您的RDD转换为成簇的RDD,其中第一个元素是 员工(在示例中称为elem),第二个是 索引
  • 然后您可以创建一个索引为id的新员工 并与原始人的名字和姓氏相同

注意:默认情况下,由zip方法创建的索引是Long,因为在我的Employee类中,id是一个int,所以我需要将其转换为int。如果您的ID已经是Long,则可能不需要此。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。