如何在spark scala中基于N个值复制记录
我有如下格式的数据帧 A. B N 1. 2. 1. 2. 9 1. 3. 8. 2. 3. 10 4.如何在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|
可以分解阵列。\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))