将 CSV 数据加载到 Dataframe 并使用 Apache Spark 转换为数组 (Java)

Load CSV data in to Dataframe and convert to Array using Apache Spark (Java)

我有一个包含以下数据的 CSV 文件:

1,2,5  
2,4  
2,3 

我想将它们加载到具有数组字符串模式的 Dataframe 中

输出应该如下所示。

[1, 2, 5]  
[2, 4]  
[2, 3] 

已在此处使用 scala 回答了这个问题:

我想在 Java 内完成。
请帮助

下面是Java中的示例代码。您需要使用 spark.read().text(String path) 方法读取您的文件,然后调用 split 函数。

import static org.apache.spark.sql.functions.split;

public class SparkSample {
    public static void main(String[] args) {
        SparkSession spark = SparkSession
                .builder()
                .appName("SparkSample")
                .master("local[*]")
                .getOrCreate();
        //Read file
        Dataset<Row> ds = spark.read().text("c://tmp//sample.csv").toDF("value");
        ds.show(false);     
        Dataset<Row> ds1 = ds.select(split(ds.col("value"), ",")).toDF("new_value");
        ds1.show(false);
        ds1.printSchema();
    }
}

您可以使用 VectorAssembler class 创建特征数组,这对管道特别有用:

val assembler = new VectorAssembler()
  .setInputCols(Array("city", "status", "vendor"))
  .setOutputCol("features")

https://spark.apache.org/docs/2.2.0/ml-features.html#vectorassembler