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 列表:
ds.schema().toList()