将汇总输出添加为PySpark DataFrame中的新行

时间:2018-04-11 19:43:13

标签: apache-spark pyspark spark-dataframe pyspark-sql

我正在将sql代码转换为Pyspark。

sql代码使用汇总来总结每个州的计数。

我尝试在pyspark中做同样的事情,但不知道如何获得总计数行。

我有一个包含州,城市和计数的表,我想在州部分的末尾添加每个州的总计数。

这是一个示例输入:

State   City      Count
WA      Seattle    10
WA      Tacoma     11
MA      Boston     11
MA      Cambridge  3
MA      Quincy     5

这是我想要的输出:

State   City       Count
 WA     Seattle    10
 WA     Tacoma     11
 WA     Total      21
 MA     Boston     11
 MA     Cambridge  3
 MA     Quincy     5
 MA     Total      19

我不知道如何在州之间添加总计数。

我确实尝试过汇总,这是我的代码:

df2=df.rollup('STATE').count()

结果显示如下:

State  Count
 WA     21
 MA     19

但是我想在每个州之后获得总计。

2 个答案:

答案 0 :(得分:1)

由于您希望Total作为DataFrame中的新行,因此一个选项是将groupBy()的结果合并并按["State", "City", "Count"]排序(以确保{{1}行显示在每个组的最后一个):

"Total"

答案 1 :(得分:-2)

或者:

df.groubpBy("State", "City").rollup(count("*"))

或只是注册表:

df.createOrReplaceTempView("df")

并使用

应用当前的SQL查询
spark.sql("...")