1

我想在pySpark中使用UDF,它不返回原子值而是嵌套結構。 我知道我可以註冊UDF並手動設置它將返回的對象的模式,例如從pySpark中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

有什麼辦法避免在註冊UDF時顯式設置返回類型,而是自動推斷其模式?

沒有。在調用udf之前,模式必須已知,並且在運行時無法推斷。

+0

但是,我用spark-xml,csv等讀取模式並不知道,並且它是在運行時推斷的。有沒有這樣的功能,我可以用於我的UDF?火花讀者如何推斷模式? – Johnny16