Apache spark 使用逗号分隔符将Spark数据框中的一列拆分为多列

Apache spark 使用逗号分隔符将Spark数据框中的一列拆分为多列,apache-spark,java-8,apache-spark-sql,Apache Spark,Java 8,Apache Spark Sql,我想使用JavaSpark中的逗号分隔符从Dataframe中的一列创建多列 我在DataFrame的一列中有一个带逗号的值,希望使用逗号分隔符将其拆分为多个列。我有以下代码: Dataset<Row> dfreq1 = spark.read().format("json").option("inferSchema", "true") .load("new.json"); dfreq1.show(5, 300); dfreq1.creat

我想使用JavaSpark中的逗号分隔符从
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);
输出

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

将此列中的csv读入数据集

Dataset<Row> df= spark.read
  .option("header",false)
  .option("inferSchema",true)
  .option("delimiter", ",")
  .csv(originalDF.map(x=>x.getString(0)))
Dataset df=spark.read
.选项(“标题”,false)
.option(“推断模式”,true)
.选项(“分隔符“,”,”)
.csv(originalDF.map(x=>x.getString(0)))

将此列中的csv读取到数据集中

Dataset<Row> df= spark.read
  .option("header",false)
  .option("inferSchema",true)
  .option("delimiter", ",")
  .csv(originalDF.map(x=>x.getString(0)))
Dataset df=spark.read
.选项(“标题”,false)
.option(“推断模式”,true)
.选项(“分隔符“,”,”)
.csv(originalDF.map(x=>x.getString(0)))
你可以试试这个

希望这对你有帮助

 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));
    }
你可以试试这个

希望这能帮助你

List schemaList=Arrays.asList(“姓名”、“性别”、“销售额”、“事件”、“年龄”、“购物时间”);
 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));
    }
Column Column=functions.col(“值”); Column linesSplit=functions.split(列“@#”); 对于(inti=0;i
List schemaList=Arrays.asList(“姓名”、“性别”、“销售额”、“事件”、“年龄”、“购物时间”);
Column Column=functions.col(“值”);
Column linesSplit=functions.split(列“@#”);

对于(int i=0;我根据“,”和getItem by Values显示值。您可以将其保存为文本,然后读取为csvThanks。对此我不清楚。请提供javacode@Tamil你知道拆分后固定的列数吗?根据“,”和getItem by Values拆分值你可以将其保存为文本,然后读取为csvThanks。我不是我不清楚。你能提供java吗code@Tamil你知道拆分后固定的列数吗?谢谢@Mahesh Gupta。我使用Spark和Java8。如果你用java提供代码,那就太好了。@Tamil我想你只需要将语法从scala更改为java,它必须是WorksThank@Mahesh Gupta。我使用Spark和Java8。如果你用java提供代码,那就太好了。@Tamil我想你只需要把scala的语法改成java就可以了