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
。