Spark DataFrame架构:
In [177]: testtbl.printSchema()
root
|-- Date: long (nullable = true)
|-- Close: double (nullable = true)
|-- Volume: double (nullable = true)
我希望将标量值函数应用于testtbl
列。假设我想计算“关闭”的平均值。柱。对于rdd我会做类似
rdd.fold(0, lambda x,y: x+y)
但是testtbl.Close
不是rdd,它是一个功能有限的列对象。 testtbl
行是rdds,列不是。那么如何将add
或用户函数应用于单个列?
答案 0 :(得分:0)
如果要将函数应用于整个列,则只需对列执行聚合操作。
例如,假设您要计算列sum
中所有值的values
。即使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's aggregation documentation中找到另一个示例。
对于你问题的第二部分。您可以创建User Defined Aggregated Function,但如果我是对的,则仅适用于Scala
。