我想在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 之前必须知道架构,并且不能在运行时推断它。