apache-spark - 如何使用从文本文件(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 中正确地做到这一点?
解决方案
推荐阅读
- python - discord.py guild.members 只返回 4 个成员而不是所有成员
- java - Springdoc中基于Swagger注解的自动描述生成
- javascript - React - 使用 Hooks 时出现错误 - 对象不可迭代(无法读取属性 Symbol (Symbol.iterator))
- python - 如何在 Python SQLite 中安全地使用 IN 命令?
- r - 在列表的 lapply 函数中获取数据框名称(ggplot2)
- ios - 有没有办法让拖尾的滑动操作像 macOS 11.0 一样具有圆角?
- kotlin - Kotlin 中“For 循环”中 Thread.Sleep() 的替代方案?
- javascript - 每次访问与模式匹配的 url 时,在 chrome 扩展的后台脚本中添加一个监听器到 webNavigation
- graphql - 使用 Apollo GraphQl 的待办事项列表乐观订阅更新
- r - 频率值作为颜色变量的热图