如何根据spark中的列值生成行?

问题描述 投票:0回答:1

假设我有一行有一行

+---+
| id|
+---+
|  4|
+---+

那么我如何根据列的值生成行

+---+
| id|
+---+
| 1 |
|---|
| 2 |
|---|
| 3 |
|---|
| 4 |
+---+
apache-spark rows using generate
1个回答
1
投票

您可以为其定义udf函数以生成范围,然后使用explode函数使它们分隔行

import org.apache.spark.sql.functions._
def generateUdf = udf((column: Int)=> (1 to column).toArray)

df.withColumn("id", explode(generateUdf(col("id")))).show(false)

哪个应该给你

+---+
|id |
+---+
|1  |
|2  |
|3  |
|4  |
+---+
© www.soinside.com 2019 - 2024. All rights reserved.