代码之家  ›  专栏  ›  技术社区  ›  dreddy

Spark dataframe为每个现有行添加一行

  •  6
  • dreddy  · 技术社区  · 7 年前

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

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

    结果数据帧

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

    我不知道如何使用spark udf和explode。 感谢您的帮助。

    1 回复  |  直到 6 年前
        1
  •  11
  •   Ramesh Maharjan    7 年前

    您可以创建另一个 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|
    +-------+----+------+