Apache spark 如何从JSON中取消多维数据集、取消汇总或展平分层/嵌套数据帧?

Apache spark 如何从JSON中取消多维数据集、取消汇总或展平分层/嵌套数据帧?,apache-spark,spark-dataframe,Apache Spark,Spark Dataframe,我有一个由JSON构建的spark数据框架,其模式如下: root |-- Engagement ID: string (nullable = true) |-- Transcript: array (nullable = true) | |-- element: struct (containsNull = true) | | |-- created_at: string (nullable = true) | | |-- message: string (nul

我有一个由JSON构建的spark数据框架,其模式如下:

root
|-- Engagement ID: string (nullable = true)
|-- Transcript: array (nullable = true)
|    |-- element: struct (containsNull = true)
|    |    |-- created_at: string (nullable = true)
|    |    |-- message: string (nullable = true)
|    |    |-- sender: struct (nullable = true)
|    |    |    |-- href: string (nullable = true)
|    |    |    |-- name: string (nullable = true)
|    |    |    |-- type: string (nullable = true)
|-- _corrupt_record: string (nullable = true)
但我想做的是把它展平,至少让每个文本中的信息都在各自的行中,基本上是这样的:

root
|-- Engagement ID: string (nullable = true)
|-- created_at: string (nullable = true)
|-- message: string (nullable = true)
|-- sender: struct (nullable = true)
|-- name: string (nullable = true)
|-- type: string (nullable = true)

当然,最终会有许多行具有相同的参与ID,原始结构类似于执行汇总或多维数据集。有没有一种简单的方法可以解开、展开、展平或是其他术语?是否可以不使用底层RDD?

您能展示一下您目前的解决方案以及您不喜欢的解决方案吗?我没有收到这样的评论:“当然,这将以具有相同参与ID的许多行结束,并且原始结构类似于执行汇总或多维数据集时的结构。”将
select($”root.Transcript.element.created_at“as”created_at)
可能对您有用吗?您能展示一下您目前的解决方案以及您不喜欢的解决方案吗?我没有收到这样的评论:“当然,这将以许多具有相同参与ID的行结束,并且原始结构类似于执行汇总或多维数据集时的结构。”是否
select($”root.Transcript.element.created_at“as”created_at“)
可能适合您?