在 Spark Scala 中添加具有初始值的新列

Add new column with initial value in Spark Scala

输入数据:

col1
-----
123400
123400
123400
123400
123400

预期输出:

col1   | col2
------------------
123400 |123401
123400 |123402
123400 |123403
123400 |123404
123400 |123405

谢谢, 湿婆

可以使用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|
+------+------+

希望对您有所帮助!