在spark中获取rdd的索引
Get index of an rdd in spark
我有一个 RDD RDD[Employee]
,其中 Employee 中的列是 id,first_name,last_name, 多布
我想用RDD[Employee]
的索引值设置id的值。我怎么做?
我可以使用 rdd.zipWithIndex()
获取索引,但我不知道下一步该怎么做。
您需要将每个元素映射到新的所需元素:
rdd.zipWithIndex()
.map{case(elem, index) => elem.copy(id = index.toInt)}
如果您的员工 class 不是案例 class,或者如果它缺少 copy
方法,您可以这样做:
rdd.zipWithIndex()
.map{case(elem, index) => Employee(index.toInt, elem.first_name, elem.last_name)}
- 首先,使用
zipWithIndex
获取每一行的索引,这
将你的 RDD 变成一个元组 RDD,其中第一个元素是你的
员工(在我的例子中我称之为 elem),第二个是
指数
- 然后你可以创建一个新的Employee,索引为id
和原来的
一样的第一个和last_name
注意:默认情况下,zip 方法创建的索引是一个 Long,因为在我的 Employee class 中,id 是一个 int,我需要将它变成一个 int。如果您的 id 已经是 Long,您可能不需要这个。
我有一个 RDD RDD[Employee]
,其中 Employee 中的列是 id,first_name,last_name, 多布
我想用RDD[Employee]
的索引值设置id的值。我怎么做?
我可以使用 rdd.zipWithIndex()
获取索引,但我不知道下一步该怎么做。
您需要将每个元素映射到新的所需元素:
rdd.zipWithIndex()
.map{case(elem, index) => elem.copy(id = index.toInt)}
如果您的员工 class 不是案例 class,或者如果它缺少 copy
方法,您可以这样做:
rdd.zipWithIndex()
.map{case(elem, index) => Employee(index.toInt, elem.first_name, elem.last_name)}
- 首先,使用
zipWithIndex
获取每一行的索引,这 将你的 RDD 变成一个元组 RDD,其中第一个元素是你的 员工(在我的例子中我称之为 elem),第二个是 指数 - 然后你可以创建一个新的Employee,索引为id 和原来的 一样的第一个和last_name
注意:默认情况下,zip 方法创建的索引是一个 Long,因为在我的 Employee class 中,id 是一个 int,我需要将它变成一个 int。如果您的 id 已经是 Long,您可能不需要这个。