Apache spark 如何使用pyspark分解Apache Spark数据帧中的嵌套结构?

Apache spark 如何使用pyspark分解Apache Spark数据帧中的嵌套结构?,apache-spark,pyspark,apache-spark-sql,Apache Spark,Pyspark,Apache Spark Sql,我现在已经在网上搜索了几个小时,以找到关于如何使用pyspark在Apache数据帧中分解嵌套的struct的任何提示。对于array和map类型,在pyspark.sql.functions中存在函数explode(),但是对于struct类型,这样的函数不可用(尽管这是一个不错的功能) 这是我的问题: 我有一个如下所示的数据框: newJSON = '{"level_instance_json":{"events":{"0":{"id":1,"visible":true},"1":{"id"

我现在已经在网上搜索了几个小时,以找到关于如何使用pyspark在Apache数据帧中分解嵌套的
struct
的任何提示。对于
array
map
类型,在
pyspark.sql.functions
中存在函数
explode()
,但是对于
struct
类型,这样的函数不可用(尽管这是一个不错的功能)

这是我的问题:

我有一个如下所示的数据框:

newJSON = '{"level_instance_json":{"events":{"0":{"id":1,"visible":true},"1":{"id":2,"visible":true},"2":{"id":1,"visible":false},"3":{"id":2,"visible":false}}},"user_id":"a1"}'
newJSON2 = '{"level_instance_json":{"events":{"0":{"id":1,"visible":true},"1":{"id":2,"visible":true},"2":{"id":1,"visible":false},"3":{"id":2,"visible":false}}},"user_id":"b2"}'
dfJSON = spark.read.json( sc.parallelize( [newJSON, newJSON2] ) ) 
dfJSON.printSchema()

您可以清楚地看到
level\u instance\u json
struct
中的嵌套结构。现在我想要的是所有这些嵌套结构被分解,这样每个编号的
struct
(即
0
1
2
3
)都有一个新行(编号为
0
1
2
3
)。因此,我所有的变量都在同一个级别上:

event_id | id | visible | user_id
0          1    true      a1
1          2    true      a1
2          1    false     a1
3          2    false     a1
0          1    true      b2
1          2    true      b2
2          1    false     b2
3          2    false     b2         
它可能首先是一种
exlode
,然后是类似于
转置的东西(从列到行)。如何做到这一点


对于我的最后一个任务,我必须以某种方式循环遍历所有编号的结构,并且我假设分解嵌套结构会使这更有效。如果你有其他的建议,尽管告诉我。我很感激这里的好建议

问你的问题时请注意。取而代之的是,请尝试提供一个数据帧的小样本和所需的输出。@pault我现在编辑了我的问题,并生成了一个可复制的示例和所需的输出。谢谢你提醒我这件事。