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

时间:2017-07-10 03:19:51

标签: scala apache-spark apache-spark-sql explode

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

groupid,unit,height
----------------------
1,in,55
2,in,54

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

生成的数据框

groupid,unit,height
----------------------
1,in,55
2,in,54
1,cm,139.7
2,cm,137.16

我不确定如何使用spark udf并在此处爆炸。 任何帮助表示赞赏。 提前谢谢。

1 个答案:

答案 0 :(得分:8)

您可以使用dataframe然后withColumn union创建另一个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)
你应该

+-------+----+------+
|groupid|unit|height|
+-------+----+------+
|1      |in  |55.0  |
|2      |in  |54.0  |
|1      |cm  |139.7 |
|2      |cm  |137.16|
+-------+----+------+