在pySpark

时间:2017-03-16 00:10:05

标签: python apache-spark pyspark apache-spark-sql spark-dataframe

我想在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

1 个答案:

答案 0 :(得分:0)

  

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

没有。在调用udf之前必须知道模式,并且无法在运行时推断出它。