mas*_*-g3 13 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|
+-------------+----------+
Run Code Online (Sandbox Code Playgroud)
我想通过sku分组,然后计算最小和最大日期.如果我这样做:
df_testing.groupBy('sku') \
.agg({'date': 'min', 'date':'max'}) \
.limit(10) \
.show()
Run Code Online (Sandbox Code Playgroud)
行为与Pandas相同,我只获取sku和max(date)列.在Pandas我通常会做以下事情来得到我想要的结果:
df_testing.groupBy('sku') \
.agg({'day': ['min','max']}) \
.limit(10) \
.show()
Run Code Online (Sandbox Code Playgroud)
但是在pySpark上这不起作用,我得到一个java.util.ArrayList cannot be cast to java.lang.String错误.谁能指点我正确的语法?
谢谢.
小智 28
你不能使用dict.使用:
>>> from pyspark.sql import functions as F
>>>
>>> df_testing.groupBy('sku').agg(F.min('date'), F.max('date'))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14760 次 |
| 最近记录: |