输入数据:
col1
-----
123400
123400
123400
123400
123400
预期产出:
col1 | col2
------------------
123400 |123401
123400 |123402
123400 |123403
123400 |123404
123400 |123405
谢谢, 希瓦
答案 0 :(得分:0)
您可以使用zipWithIndex
,初始值为123401
val df = Seq(123400, 123400, 123400, 123400, 123400).toDF("col1")
val newDF = df.rdd.zipWithIndex().map { case (v, ind) =>
(v.getInt(0), ind + 123401)
}
.toDF("col1", "col2")
newDF.show(false)
或者,如果您有许多其他列并且想要通用解决方案,那么您可以使用相同的方式使用模式重新构建数据帧
val df2 = spark.sqlContext.createDataFrame(
df.rdd.zipWithIndex.map {
case (row, index) => Row.fromSeq(row.toSeq :+ index + 123401)
},
// Create schema for index column
StructType(df.schema.fields :+ StructField("col2", LongType, false)))
df2.show(false)
输出:
+------+------+
|col1 |index |
+------+------+
|123400|123401|
|123400|123402|
|123400|123403|
|123400|123404|
|123400|123405|
+------+------+
希望这有帮助!