Разделить один столбец на несколько столбцов в Spark DataFrame с помощью разделителя запятых - PullRequest
0 голосов
/ 07 ноября 2019

Я хочу создать несколько столбцов из одного столбца из Dataframe, используя запятую в Java Spark.

У меня есть одно значение с запятой в одном столбце в DataFrame и я хочу разбить на несколькостолбцы с помощью разделителя запятых. У меня есть следующий код:

Dataset<Row> dfreq1 = spark.read().format("json").option("inferSchema", "true")
            .load("new.json");

    dfreq1.show(5, 300);


    dfreq1.createOrReplaceTempView("tempdata");

    Dataset<Row> dfreq2 = dfreq1.sqlContext().sql("select split(names, '|') from tempdata");

    dfreq2.show(5, 300);

Вход

+----------------------------+
|                         name|
+-----------------------------+
|ABC1,XYZ1,GDH1,KLN1,JUL1,HAI1|
|ABC2,XYZ2,GDH2,KLN2,JUL2,HAI2|
+-----------------------------+

Выход

+-----------------------------+
| Cl1| Cl2| Cl3| Cl3|Cl4 | Cl4|
+-----------------------------+
|ABC1|XYZ1|GDH1|KLN1|JUL1|HAI1|
|ABC2|XYZ2|GDH2|KLN2|JUL2|HAI2|
+-----------------------------+

Ответы [ 2 ]

1 голос
/ 08 ноября 2019

вы можете попробовать это

scala> var dfd =Seq(("ABC1,XYZ1,GDH1,KLN1,JUL1,HAI1"),("ABC2,XYZ2,GDH2,KLN2,JUL2,HAI2")).toDF("name")

scala> dfd.withColumn("temp", split(col("name"), ",")).select((0 until 6).map(i => col("temp").getItem(i).as(s"col$i")): _* ).show
+----+----+----+----+----+----+
|col0|col1|col2|col3|col4|col5|
+----+----+----+----+----+----+
|ABC1|XYZ1|GDH1|KLN1|JUL1|HAI1|
|ABC2|XYZ2|GDH2|KLN2|JUL2|HAI2|
+----+----+----+----+----+----+

надеюсь, это поможет вам

0 голосов
/ 07 ноября 2019

Вы читаете CSV из этого столбца в набор данных

Dataset<Row> df= spark.read
  .option("header",false)
  .option("inferSchema",true)
  .option("delimiter", ",")
  .csv(originalDF.map(x=>x.getString(0)))
...