在 spark 中使用数据集 api 提取对象中的嵌套对象

Extract nested objects in an object using dataset api in spark

我是 Spark 的新手,我正在尝试数据集 api,我想知道是否可以使用数据集 api.[= 提取对象中的嵌套对象21=] 例如,假设我有一个 A 类型的对象和一个 B 类型的对象,如下所示

case class A(a: String, b: Integer)
case class B(c: Array[A])

我有一个包含 class B 对象的数据集:数据集[B] 我想应用一些转换来获取最终数据集中 A 类型的所有对象:Dataset[A]
我试过了,但它不起作用

bs.map(b => b.a.map(x => x))

有人有想法吗?

提前致谢

您可以先将 B's Array[A] 分解成行并将它们转换为 DataSet[A]

## 'bs' Dataset 
+--------------------------+
|c                         |
+--------------------------+
|[[value1, 1], [value2, 2]]|
+--------------------------+


val testDF = bs.select(explode($"c"))

## 'testDF' Dataframe
+-----------+
|        col|
+-----------+
|[value1, 1]|
|[value2, 2]|
+-----------+


val asDF = test_df.withColumn("a", col("col.a")).withColumn("b", col("col.b")).drop("col").as[A]

## 'asDF' Dataset
+------+---+
|     a|  b|
+------+---+
|value1|  1|
|value2|  2|
+------+---+