我有一列数字的电火花数据。我需要对该列进行求和,然后在python变量中将结果作为int返回。
df = spark.createDataFrame([("A", 20), ("B", 30), ("D", 80)],["Letter", "Number"])我做下面的总结这一栏。
df.groupBy().sum()但我得到了一份数据。
+-----------+
|sum(Number)|
+-----------+
| 130|
+-----------+我会把130作为一个int返回到一个变量中,以便在程序中的其他地方使用。
result = 130发布于 2018-08-15 08:59:46
最简单的方法就是:
df.groupBy().sum().collect()但是这是非常慢的操作:避免groupByKey,您应该使用RDD和reduceByKey:
df.rdd.map(lambda x: (1,x[1])).reduceByKey(lambda x,y: x + y).collect()[0][1]我尝试了一个更大的数据集,并测量了处理时间:
RDD和ReduceByKey:2.23 s
GroupByKey: 30.5秒
发布于 2018-05-22 12:00:08
我认为最简单的方法是:
df.groupBy().sum().collect()将返回一个列表。在你的例子中:
In [9]: df.groupBy().sum().collect()[0][0]
Out[9]: 130发布于 2019-10-14 13:14:08
如果您想要一个特定的列:
import pyspark.sql.functions as F
df.agg(F.sum("my_column")).collect()[0][0]https://stackoverflow.com/questions/47812526
复制相似问题