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

我想使用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|
+-----------------------------+
rxwywy 回答:使用逗号分隔符将Spark DataFrame中的一列拆分为多列

  

您可以尝试

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

希望这对您有帮助

,
 List<String> schemaList =  Arrays.asList("name","gender","sale_amount","event","age","shop_time");
    Column column = functions.col("value");
    Column linesSplit = functions.split(column,"@#");
    for(int i=0;i<schemaList.size();i++){
        lines = lines.withColumn(schemaList.get(i),linesSplit.getItem(i));
    }
,

您将本列中的csv读入数据集

Dataset<Row> df= spark.read
  .option("header",false)
  .option("inferSchema",true)
  .option("delimiter",")
  .csv(originalDF.map(x=>x.getString(0)))
本文链接:https://www.f2er.com/3144675.html

大家都在问