创建/注册 PySpark UDF 并将其应用于一列



我对如何创建火花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")))

仅此而已,但手册中并不总是清楚地解释。

相关内容

  • 没有找到相关文章