gpt4 book ai didi

apache-spark - pyspark 中的 first_value 窗口函数

转载 作者:行者123 更新时间:2023-12-04 04:19:11 24 4
gpt4 key购买 nike

我正在使用 pyspark 1.5 从 Hive 表中获取数据并尝试使用窗口函数。

根据 this存在一个名为 firstValue 的解析函数这将为我提供给定窗口的第一个非空值。我知道这存在于 Hive 中,但我无法在 pyspark 的任何地方找到它。

鉴于 pyspark 不允许 UserDefinedAggregateFunctions (UDAF),有没有办法实现这一点?

最佳答案

Spark >= 2.0 :
first需要一个可选的 ignorenulls可以模仿 first_value 行为的参数:

df.select(col("k"), first("v", True).over(w).alias("fv"))

Spark < 2.0 :

可用函数被称为 first 并且可以如下使用:

df = sc.parallelize([
("a", None), ("a", 1), ("a", -1), ("b", 3)
]).toDF(["k", "v"])

w = Window().partitionBy("k").orderBy("v")

df.select(col("k"), first("v").over(w).alias("fv"))

但如果您想忽略空值,则必须直接使用 Hive UDF:

df.registerTempTable("df")

sqlContext.sql("""
SELECT k, first_value(v, TRUE) OVER (PARTITION BY k ORDER BY v)
FROM df""")

关于apache-spark - pyspark 中的 first_value 窗口函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35142216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com