将 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
我有一个包含以下数据的 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