1
votes

Créer un nouvel ensemble de données à l'aide de l'ensemble de données existant en ajoutant une colonne nulle entre deux colonnes

J'ai créé un ensemble de données dans Spark en utilisant Java en lisant un fichier csv. Voici mon ensemble de données initial:

+---+-----+
|_c0|  _c2|
+---+-----+
|  1|NANDU|
|  2| SANU|
|  3| MANU|
|  4|VEENA|
+---+-----+

Je souhaite créer un dataframe comme suit (une colonne ayant des valeurs nulles):

Dataset<Row> ds  = spark.read().format("csv").option("header", "false").load("/home/nandu/Data.txt");
Column [] selectedColumns = new Column[2];
selectedColumns[0]= new Column("_c0");
selectedColumns[1]= new Column("_c2");
ds2 = ds.select(selectedColumns);

Voici mon code existant:

+---+----+--------+
|_c0| _c1|     _c2|
+---+----|--------+
|  1|null|   NANDU|
|  2|null|    SANU|
|  3|null|    MANU|
|  4|null|   VEENA|
+---+----|--------+

qui créera l'ensemble de données comme suit.

+---+----------+-----+---+
|_c0|       _c1|  _c2|_c3|
+---+----------+-----+---+
|  1|9090999999|NANDU| 22|
|  2|9999999999| SANU| 21|
|  3|9999909090| MANU| 22|
|  4|9090909090|VEENA| 23|
+---+----------+-----+---+


0 commentaires

3 Réponses :


2
votes

Pour sélectionner les deux colonnes souhaitées et en ajouter une nouvelle avec des valeurs nulles, vous pouvez utiliser ce qui suit:

import org.apache.spark.sql.functions.*;
import org.apache.spark.sql.types.StringType;

ds.select({col("_c0"), lit(null).cast(DataTypes.StringType).as("_c1"), col("_c2")});


0 commentaires

1
votes

Essayez de suivre le code

import org.apache.spark.sql.functions.{ lit => flit}
import org.apache.spark.sql.types._
val ds = spark.range(100).withColumn("c2",$"id")
ds.withColumn("new_col",flit(null: String)).selectExpr("id","new_col","c2").show(5)

J'espère que cela vous aidera

Cheers :)


0 commentaires

1
votes

L'ajout d'une nouvelle colonne avec une valeur de chaîne nulle peut résoudre le problème. Essayez le code suivant bien qu'il soit écrit en scala mais vous aurez l'idée:

import org.apache.spark.sql.functions.lit
import org.apache.spark.sql.types.StringType
val ds2 = ds.withColumn("new_col", lit(null).cast(StringType)).selectExpr("_c0", "new_col as _c1", "_c2")


0 commentaires