如何在sparkscala中基于n个值复制记录

s8vozzvw  于 2021-07-13  发布在  Spark
关注(0)|答案(1)|浏览(384)

我有如下格式的Dataframe。
荷兰银行1212913823104
我试图复制记录的n列值为n=2的第三行值,这意味着它将重复2次,就像
荷兰银行1212913823823104310431043104
我试图在ScalaSpark中使用explode函数来实现这一点,但是做不到。
我正在编辑进一步的评论,以增加1在n值,如
荷兰银行1212913823833104310531063107

ogq8wdun

ogq8wdun1#

你可以分解一个数组,重复:

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|
+---+---+---+

相关问题