我想在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
。
答案 0 :(得分:0)
有没有办法避免在注册UDF时显式设置返回类型,而是自动推断其模式?
没有。在调用udf之前必须知道模式,并且无法在运行时推断出它。