Apache spark 使用structfield数组迭代复杂数据帧

Apache spark 使用structfield数组迭代复杂数据帧,apache-spark,pyspark,Apache Spark,Pyspark,我在dataframe的一列中有以下模式的数据 <type 'list'>: [StructField(data,StructType(List(StructField(account,StructType(List(StructField(Id,StringType,true),StructField(Name,StringType,true),StructField(books,ArrayType(StructType(List(StructField(bookTile,Stri

我在dataframe的一列中有以下模式的数据

<type 'list'>: [StructField(data,StructType(List(StructField(account,StructType(List(StructField(Id,StringType,true),StructField(Name,StringType,true),StructField(books,ArrayType(StructType(List(StructField(bookTile,StringType,true),StructField(bookId,StringType,true),StructField(bookName,StringType,true))),true),true)))))))]
:[StructField(数据,StructType(列表)(帐户,StructType(列表,Id,StringType,true),StructField(名称,StringType,true),StructField(书籍,ArrayType(列表,StructField(bookTile,StringType,true),StructField(bookId,StringType,true)),true,true())]]

我想让它们相互作用,从中提取每个值,并创建一个新的数据帧。pyspark中是否有任何内置函数支持此功能,或者我应该迭代它们?有什么有效的方法吗

有一个
explode
函数,可以将数组的每个元素放在自己的行中。这就是你想要的吗?我试过了,但它告诉我“由于数据类型不匹配:函数explode的输入应该是数组或映射类型,而不是struct”啊,我可能误解了你的意思。如果您可以在问题中添加一个示例输入/预期输出数据框,那么会更清楚一些。但是,可能是您正在寻找如何扩展结构:或者可能是: