Apache Spark —将UDF的结果分配给多个数据框列

Apache Spark —将UDF的结果分配给多个数据框列,第1张

Apache Spark —将UDF的结果分配给多个数据框列

无法通过单个UDF调用创建多个顶级列,但可以创建一个新的

struct
。它需要具有指定的UDF
returnType

from pyspark.sql.functions import udffrom pyspark.sql.types import *schema = StructType([    StructField("foo", FloatType(), False),    StructField("bar", FloatType(), False)])def udf_test(n):    return (n / 2, n % 2) if n and n != 0.0 else (float('nan'), float('nan'))test_udf = udf(udf_test, schema)df = sc.parallelize([(1, 2.0), (2, 3.0)]).toDF(["x", "y"])foobars = df.select(test_udf("y").alias("foobar"))foobars.printSchema()## root##  |-- foobar: struct (nullable = true)##  |    |-- foo: float (nullable = false)##  |    |-- bar: float (nullable = false)

您可以使用简单的方法进一步简化架构

select

foobars.select("foobar.foo", "foobar.bar").show()## +---+---+## |foo|bar|## +---+---+## |1.0|0.0|## |1.5|1.0|## +---+---+


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5616852.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存