Apache spark 向数据帧中的每一行添加序列号-Spark Scala

Apache spark 向数据帧中的每一行添加序列号-Spark Scala,apache-spark,hive,Apache Spark,Hive,我需要向数据帧中处理的每一行添加序列号。但每次我添加时,我们都需要从现有行中获取序列的最大值,然后添加+1并将其分配给新行 你知道我们如何用spark scala中的dataframe实现这一点吗 例如 以下是表格中的现有数据: 现在我需要向表中添加新行,如下所示: 每次向表中插入新数据时,我们都需要通过从表中获取max(row_id)并向其中添加+1来获取row id 请提出任何意见 谢谢,Spark数据帧是不可变的,因此无法追加/插入行。相反,使用union。这里有一个快速解决你问题的方法。

我需要向数据帧中处理的每一行添加序列号。但每次我添加时,我们都需要从现有行中获取序列的最大值,然后添加+1并将其分配给新行

你知道我们如何用spark scala中的dataframe实现这一点吗

例如

以下是表格中的现有数据: 现在我需要向表中添加新行,如下所示: 每次向表中插入新数据时,我们都需要通过从表中获取max(row_id)并向其中添加+1来获取row id

请提出任何意见


谢谢,

Spark数据帧是不可变的,因此无法追加/插入行。相反,使用union。这里有一个快速解决你问题的方法。这不是一个好的解决方案,因为每次添加新行时都需要执行并集

val data = spark
  .read
  .option("inferSchema", "true")
  .option("header", "true")
  .csv("data.csv")

data.createOrReplaceTempView("dView")
val sqld = spark.sql("SELECT MAX(row_id)+1,SUM(emp_id),SUM(sal) FROM dView")
val finalD = data.union(sqld)
finalD.show()
spark.stop()
data.csv

row_id,emp_id, sal
1,11,2000
2,22,3000
输出:

+------+------+----+
|row_id|emp_id| sal|
+------+------+----+
|     1|    11|2000|
|     2|    22|3000|
|     3|    33|5000|
+------+------+----+

感谢您的回复Binoy J。假设我有一个包含50条更新记录和20条插入(新记录)的数据框。所有更新记录都将具有row_id,而插入记录中不包含该值。我需要从更新的记录中获取max(row_id)并向其中添加1,然后添加此值以按顺序插入记录。是否可以为上述senario实现此功能。。
row_id,emp_id, sal
1,11,2000
2,22,3000
+------+------+----+
|row_id|emp_id| sal|
+------+------+----+
|     1|    11|2000|
|     2|    22|3000|
|     3|    33|5000|
+------+------+----+