Python 在pySpark中从UDF动态推断返回对象的模式

Python 在pySpark中从UDF动态推断返回对象的模式,python,apache-spark,pyspark,apache-spark-sql,spark-dataframe,Python,Apache Spark,Pyspark,Apache Spark Sql,Spark Dataframe,我想在pySpark中使用一个UDF,它不返回原子值,而是一个嵌套结构。 我知道我可以注册UDF并手动设置它将返回的对象的模式,例如 format = ArrayType( StructType([ StructField('id',IntegerType()), StructField('text',StringType())

我想在pySpark中使用一个UDF,它不返回原子值,而是一个嵌套结构。 我知道我可以注册UDF并手动设置它将返回的对象的模式,例如

format = ArrayType(
                   StructType([
                               StructField('id',IntegerType()),
                               StructField('text',StringType())
                              ]
                  )
spark.udf.register('functionName', functionObject, format)
并在UDF中使用python列表来匹配格式,例如

return [[1,'A'],[2,'B']]
但是有没有办法避免在注册UDF时显式设置返回类型,而是自动推断其模式

如果我没有设置返回类型,它将自动设置为
StringType

有没有办法避免在注册UDF时显式设置返回类型,而是自动推断其模式

没有。在调用udf之前必须知道模式,并且不能在运行时推断模式

有没有办法避免在注册UDF时显式设置返回类型,而是自动推断其模式


没有。在调用udf之前必须知道模式,并且不能在运行时推断模式。

但是当我使用spark xml、csv等读取时,模式是未知的,并且是在运行时推断出来的。有没有这样的功能,我可以使用我的自定义项?spark阅读器是如何推断模式的?但是当我使用spark xml、csv等进行阅读时,模式是未知的,它是在运行时推断出来的。有没有这样的功能,我可以使用我的自定义项?spark阅读器如何推断模式?