我对如何创建火花udf有点困惑。我现在有一个函数parse_xml
并执行以下操作:
spark.udf.register("parse_xml_udf", parse_xml)
parsed_df = xml_df.withColumn("parsed_xml', parse_xml_udf(xml_df['raw_xml']))
其中xml_df
是原始的火花 df,raw_xml
是我要应用该功能的列。
我见过几个地方像spark_udf = udf(parse_xml, StringType())
这样的线 - 这条线和spark.udf.register
线有什么区别?此外,如果我将该函数应用于该列,它是否将其应用于每一行?换句话说,我的 UDF 应该返回一行的输出吗?
这样与SQL一起使用,
spark.udf.register("squaredWithPython", squared)
:%sql select id, squaredWithPython(id) as id_squared from test
如果只是像这样使用数据框,
squared_udf = udf(squared, LongType())
:display(df.select("id", squared_udf("id").alias("id_squared")))
仅此而已,但手册中并不总是清楚地解释。