解构 Spark SQL 数据集<Row> 回到其单独的 StructFields/列

问题描述 投票:0回答:1

Java 11 和 Spark SQL 2.13:3.3.2 在这里。请注意:我正在使用 Java API 并对它感兴趣,并且希望得到 Java 答案,但我可能可以破译基于 Scala/Python 的答案,并在必要时进行必要的 Scala/Python 到 Java 的转换。但 Java 将不胜感激!


我了解如何使用指定的模式创建新的

Dataset<Row>

Dataset<Row> dataFrame = sparkSession.emptyDataFrame();

List<StructField> structFields = getSomehow();

StructType schema = DataTypes.createStructType(structFields.toArray(StructField[]::new));
Dataset<Row> ds = sparkSession.createDataFrame(dataFrame.rdd(), schema);

我想了解的是:如何做相反的事情?如何将

Dataset<Row>
变回
List<StructField>
(其模式;列)?我看到
ds.schema()
方法,它返回一个
StructType
,但不确定如何将其解构回单个列/
StructFields
的列表。有什么想法吗?

java apache-spark apache-spark-sql apache-spark-dataset
1个回答
0
投票

你很接近,你需要将它转换为 Java 列表:

ds.schema().toList()
© www.soinside.com 2019 - 2024. All rights reserved.