pySpark Dataframe上的多个聚合标准

时间:2016-10-27 01:08:12

标签: apache-spark pyspark spark-dataframe

我有一个pySpark数据框,如下所示:

+-------------+----------+
|          sku|      date|
+-------------+----------+
|MLA-603526656|02/09/2016|
|MLA-603526656|01/09/2016|
|MLA-604172009|02/10/2016|
|MLA-605470584|02/09/2016|
|MLA-605502281|02/10/2016|
|MLA-605502281|02/09/2016|
+-------------+----------+

我想通过sku分组,然后计算最小和最大日期。如果我这样做:

df_testing.groupBy('sku') \
    .agg({'date': 'min', 'date':'max'}) \
    .limit(10) \
    .show()

行为与Pandas相同,我只获得skumax(date)列。在熊猫我通常会做以下事情来得到我想要的结果:

df_testing.groupBy('sku') \
    .agg({'day': ['min','max']}) \
    .limit(10) \
    .show()

然而,在pySpark上,这不起作用,我收到java.util.ArrayList cannot be cast to java.lang.String错误。有人可以指出我正确的语法吗?

感谢。

1 个答案:

答案 0 :(得分:25)

你不能使用dict。使用:

>>> from pyspark.sql import functions as F
>>>
>>> df_testing.groupBy('sku').agg(F.min('date'), F.max('date'))