scala - 获取火花中rdd的索引
问题描述
我有一个RDD RDD[Employee]
,其中 Employee 中的列是 id、first_name、last_name、dob 我想将 id 的值设置为RDD[Employee]
. 我怎么做?我可以使用 获取索引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,你可能不需要这个。
推荐阅读
- python - RuntimeError:当 `enforce_sorted` 为 True 时,`lengths` 数组必须按降序排序。- 火炬
- reactjs - React Apollo 客户端多个突变
- mongodb - 并发请求的MongoDB内存管理
- webpack - 当extractCss为真时,如何在head标签中获取特定css文件的内联样式?
- javascript - 加载所有图像后更新组件的状态
- swift - RealityKit – 如何为自然光创建阴影捕捉器?
- angular - 仅在单击按钮 angular 后才显示我的搜索
- arrays - 从对象中获取未知的“标签”
- python - 具有平方根的 Python pyplot 文本
- mysql - 为什么添加列返回时Mysql查询变慢?