将用户函数应用于整个Spark DataFrame列



Spark DataFrame架构:

In [177]: testtbl.printSchema()
root
 |-- Date: long (nullable = true)
 |-- Close: double (nullable = true)
 |-- Volume: double (nullable = true)

我希望将标量值函数应用于testtbl的列。假设我希望计算"Close"列的平均值。对于rdd,我会做一些类似的事情

rdd.fold(0, lambda x,y: x+y)

但是testtbl.Close不是rdd,它是一个功能有限的列对象。testtbl的行是rdd,列不是。那么,如何将add或用户函数应用于单个列呢?

如果要将函数应用于整列,只需对该列执行聚合操作即可。

例如,假设要计算列values中所有值的sum。尽管df不是聚合数据,但将聚合函数应用于DataFrames是有效的。

from pyspark.sql.functions import *
df = sc.parallelize([(1,), (2,), (3,)]).toDF(["values"])
df.agg(sum("values").alias("sum")).show()
+---+
|sum|
+---+
|  6|
+---+

您可以在Pyspark的聚合文档中找到另一个示例。

关于你问题的第二部分。您可以创建一个用户定义的聚合函数,但如果我是对的,它只适用于Scala

相关内容

  • 没有找到相关文章

最新更新