首页 > 解决方案 > 如何使用从文本文件(JAVA)读取的模式创建数据集?

问题描述

我想创建一个数据集,其模式是从文本文件中读取的,如下所示,读取模式并进行相应转换的代码如下所示。

Dataset<String> dss = spark.read().textFile("C:/somePathTo/file.csv");
Dataset<StructField> schemaST2 = dss.toJavaRDD().map((MapFunction<String, StructField>)row -> new StructField(Arrays.stream(row.split(" ")).toArray()[0].toString(), getType(Arrays.stream(row.split(" ")).toArray()[1].toString()),true, Metadata.empty()));

StructField[] array = new StructField[schemaST2.toJavaRDD().collect().size()];
schemaST2.collectAsList().toArray(array);

StructType schema = new StructType( array );

然后我像这样读取数据集

Dataset<Row> dataset = spark.read().format("csv").schema(schema).load("path");

架构文件(文本文件)是这样的

NameOfAttribute1 IntegerType
NameOfAttribute2 StringType ...

但是 IDE 中出现错误:

必需类型:Function <String, R> 提供:MapFunction <String, StructField>

为什么 ?如何在 Java Spark 3.1 中正确地做到这一点?

标签: apache-spark

解决方案


推荐阅读