You can use monotonicallyIncreasingId
to get a rowNum feature
val df2 = df.withColumn("rownum",monotonicallyIncreasingId)
here the index would start with 0.
to start index with 1, one add +1 to the monotonicallyIncreasingId
val df2 = df.withColumn("rownum",monotonicallyIncreasingId+1)
scala> val df2 = df.withColumn("rownum",monotonicallyIncreasingId)
df2: org.apache.spark.sql.DataFrame = [id: string, flag: boolean, rownum: bigint]
scala> df2.show
+---+-----+------+
| id| flag|rownum|
+---+-----+------+
|041|false| 0|
|042|false| 1|
|043|false| 2|
+---+-----+------+
scala> val df2 = df.withColumn("rownum",monotonicallyIncreasingId)
df2: org.apache.spark.sql.DataFrame = [id: string, flag: boolean, rownum: bigint]
scala> df2.show
+---+-----+------+
| id| flag|rownum|
+---+-----+------+
|041|false| 0|
|042|false| 1|
|043|false| 2|
+---+-----+------+
scala> val df2 = df.withColumn("rownum",monotonicallyIncreasingId)
df2: org.apache.spark.sql.DataFrame = [id: string, flag: boolean, rownum: bigint]
scala> df2.show
+---+-----+------+
| id| flag|rownum|
+---+-----+------+
|041|false| 0|
|042|false| 1|
|043|false| 2|
+---+-----+------+
scala> var df2 = df.withColumn("rownum",monotonicallyIncreasingId)
df2: org.apache.spark.sql.DataFrame = [id: string, flag: boolean, rownum: bigint]
scala> df2.show
+---+-----+------+
| id| flag|rownum|
+---+-----+------+
|041|false| 0|
|042|false| 1|
|043|false| 2|
+---+-----+------+
scala> df2 = df.withColumn("rownum",monotonicallyIncreasingId)
df2: org.apache.spark.sql.DataFrame = [id: string, flag: boolean, rownum: bigint]
scala> df2.show
+---+-----+------+
| id| flag|rownum|
+---+-----+------+
|041|false| 0|
|042|false| 1|
|043|false| 2|
+---+-----+------+