如何在spark scala中基于N个值复制记录

如何在spark scala中基于N个值复制记录,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,我有如下格式的数据帧 A. B N 1. 2. 1. 2. 9 1. 3. 8. 2. 3. 10 4. 可以分解阵列。\u重复: df.withColumn("n", explode(array_repeat($"n", $"n"))).show +---+---+---+ | A| B| n| +---+---+---+ | 1| 2| 1| | 2| 9| 1| | 3| 8| 2| | 3| 8|

我有如下格式的数据帧

A. B N 1. 2. 1. 2. 9 1. 3. 8. 2. 3. 10 4.
可以分解阵列。\u重复:

df.withColumn("n", explode(array_repeat($"n", $"n"))).show
+---+---+---+
|  A|  B|  n|
+---+---+---+
|  1|  2|  1|
|  2|  9|  1|
|  3|  8|  2|
|  3|  8|  2|
+---+---+---+
对于您编辑的问题

df.withColumn("n", explode(sequence($"n", $"n"*2-1))).show
+---+---+---+
|  A|  B|  n|
+---+---+---+
|  1|  2|  1|
|  2|  9|  1|
|  3|  8|  2|
|  3|  8|  3|
|  3| 10|  4|
|  3| 10|  5|
|  3| 10|  6|
|  3| 10|  7|
+---+---+---+

不工作,如果n=3,4的行很少,5@Dev对不起,我误解了这个问题。请参阅编辑?其工作正常,我们能否将列值n从n增加到下一行的n值,假设n=2,则下一个n将是2,3,如果n=5,则n=5,6,7,8,9,10。与先前删除的答案相同,但不是从lit(1)开始,我应该像当前的n值一样增加到n值的数量。@Dev我很困惑。你要从n到2*n吗?您可以尝试
explode(序列($“n”,$“n”*2))