Это то же самое, но вы можете попробовать:
import pyspark.sql.functions as F
user_time_matrix = df.groupBy('timebucket_start').pivot("user").agg(F.sum('hits'))
Дайте мне знать, если есть какая-либо ошибка или бесконечный цикл.Также, когда вы используете этот код, пользователи станут ссылкой на столбцы:
Ввод:
+----+----------+------+
|hits| time| user|
+----+----------+------+
| 2|2017-12-30| Messi|
| 3|2017-12-30|Jordan|
| 462|2017-12-30|Jordan|
| 2|2017-12-31| Messi|
| 2|2017-12-31| Messi|
+----+----------+------+
Ввод:
+----------+------+-----+
| time|Jordan|Messi|
+----------+------+-----+
|2017-12-31| null| 4|
|2017-12-30| 465| 2|
+----------+------+-----+
Я бы порекомендовал:
user_time_matrix = df.groupBy('timebucket_start', 'user').sum('hits')
Вывод:
+----------+------+---------+
| time| user|sum(hits)|
+----------+------+---------+
|2017-12-31| Messi| 4|
|2017-12-30|Jordan| 465|
|2017-12-30| Messi| 2|
+----------+------+---------+