Python 火花管路RDD toDF类型错误

Python 火花管路RDD toDF类型错误,python,apache-spark,pyspark,apache-spark-sql,spark-dataframe,Python,Apache Spark,Pyspark,Apache Spark Sql,Spark Dataframe,我正在尝试创建一个udf,该udf返回以下格式的值: [ {u'description': None, u'location': None, u'list_field': [Row(details=None, name=u'John Smith', profile_url=None)], u'join_date': u'January 21st 2008', u'title': u'Potato Manager'}, {u'description': Profile 2, u'loc

我正在尝试创建一个udf,该udf返回以下格式的值:

[
{u'description': None,
 u'location': None,
 u'list_field': [Row(details=None, name=u'John Smith', profile_url=None)],
 u'join_date': u'January 21st 2008',
 u'title': u'Potato Manager'},
 {u'description': Profile 2,
 u'location': None,
 u'list_field': [Row(details=None, name=u'Tony Montana', profile_url=None)],
 u'join_date': u'January 21st 2012',
 u'title': u'Awesomeness Specialist'}
]
如您所见,返回值有多种类型(它返回一个dict列表,其中一些字段的值是另一个dict列表)。我将如何创建udf?我尝试过:

filter_udf = udf(func, ArrayType(MapType(StringType(),ArrayType(StringType(),StringType()))))

也就是说,指定最复杂的返回节点。但是这给了我错误。

对于初学者来说,这不是一个有效的架构定义。您介意详细说明一下吗?首先,您应该将
MapType(StringType,ArrayType(…
替换为
MapType(StringType(),ArrayType(…
)。以下是不正确的
ArrayType(StringType(),StringType())
虽然不应该抱怨(数组的第二个参数应该是布尔值)。最后,它与记录不匹配。这里可能还有其他问题我没有注意到。Python字典也不是最好的选择。是的,使用StringType而不是StringType()只是文章中的一个输入错误。