Spark数据框为每个现有行添加一行

dre*_*ddy 5 scala explode apache-spark apache-spark-sql

我有一个包含以下列的数据框:

groupid,unit,height
----------------------
1,in,55
2,in,54
Run Code Online (Sandbox Code Playgroud)

我想创建另一个包含额外行的数据框,其中unit = cm,height = height*2.54.

结果数据帧:

groupid,unit,height
----------------------
1,in,55
2,in,54
1,cm,139.7
2,cm,137.16
Run Code Online (Sandbox Code Playgroud)

不知道如何使用spark udf并在这里爆炸.任何帮助表示赞赏.提前致谢.

Ram*_*jan 9

你可以创建另一个dataframe与你需要使用修改withColumnunion两者dataframes

import sqlContext.implicits._
import org.apache.spark.sql.functions._

val df = Seq(
  (1, "in", 55),
  (2, "in", 54)
).toDF("groupid", "unit", "height")

val df2 = df.withColumn("unit", lit("cm")).withColumn("height", col("height")*2.54)

df.union(df2).show(false)
Run Code Online (Sandbox Code Playgroud)

你应该有

+-------+----+------+
|groupid|unit|height|
+-------+----+------+
|1      |in  |55.0  |
|2      |in  |54.0  |
|1      |cm  |139.7 |
|2      |cm  |137.16|
+-------+----+------+
Run Code Online (Sandbox Code Playgroud)