1

j'ai une trame de données avec des colonnes suivantes:Spark dataframe ajouter une ligne pour chaque ligne existante

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

Je veux créer un autre avec des lignes supplémentaires dataframe où unité = cm et hauteur = hauteur * 2.54.

résultant dataframe:

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

Je ne sais pas comment je peux utiliser udf d'allumage et d'exploser ici. Toute aide est appréciée. Merci d'avance.

Répondre

3

vous pouvez créer un dataframe avec les modifications à l'aide withColumn et nécessitent alors union deux dataframes comme

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) 

vous devriez avoir

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