使用逗号分隔符将Spark DataFrame中的一列拆分为多列

问题描述 投票:0回答:2

我想使用Java Spark中的逗号分隔符从Dataframe的一列创建多列。

我在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|
+-----------------------------+
apache-spark java-8 apache-spark-sql
2个回答
1
投票

您可以尝试这个

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|
+----+----+----+----+----+----+

希望这对您有帮助


-1
投票

您从此列将csv读入了数据集

Dataset<Row> df= spark.read
  .option("header",false)
  .option("inferSchema",true)
  .option("delimiter", ",")
  .csv(originalDF.map(x=>x.getString(0)))
© www.soinside.com 2019 - 2024. All rights reserved.