lib*_*ber 5 window-functions apache-spark apache-spark-sql pyspark
我正在使用 pyspark 1.5 从 Hive 表中获取数据并尝试使用窗口函数。
根据该存在所谓的解析函数firstValue,这将使我定的窗口的第一个非空值。我知道这存在于 Hive 中,但我无法在 pyspark 的任何地方找到它。
鉴于 pyspark 不允许 UserDefinedAggregateFunctions (UDAF),有没有办法实现这一点?
zer*_*323 11
火花 >= 2.0:
first接受一个可选ignorenulls参数,它可以模仿以下行为first_value:
df.select(col("k"), first("v", True).over(w).alias("fv"))
Run Code Online (Sandbox Code Playgroud)
火花 < 2.0:
调用可用函数first,可以按如下方式使用:
df.select(col("k"), first("v", True).over(w).alias("fv"))
Run Code Online (Sandbox Code Playgroud)
但如果您想忽略空值,则必须直接使用 Hive UDF:
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"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14347 次 |
| 最近记录: |