Pyspark dataframe делит столбец на постоянное значение в столбце, не собирая dataframe - PullRequest
1 голос
/ 12 июня 2019

У меня есть фрейм данных pyspark для количества сеансов входа пользователя в систему на веб-сайте, для каждого конкретного дня, но сегментированных по дням регистрации.Я хочу разделить эти числа на числа в день регистрации, чтобы получить дробные значения.Это означает, что если поле daysSinceRegistration равно 0, дробное значение всегда будет равно 1.

+----------+----------+---------------------+-----+
|sessionDay|   regDate|daysSinceRegistration|count|
+----------+----------+---------------------+-----+
|2019-06-11|2019-06-10|                    1| 6463|
|2019-06-11|2019-06-11|                    0|14452|
|2019-06-11|2019-06-09|                    2| 3878|
+----------+----------+---------------------+-----+

Я знаю, что это можно сделать следующим образом:

dayZeroCount = sessions_no_segmentations.filter(sessions_no_segmentations['daysSinceRegistration'] == 0).collect()[0]['count']
    sessions_no_segmentations = sessions_no_segmentations.withColumn('percentUsers', fun.col('count')/dayZeroCount)

Однако для этого требуетсяcollect() вызов, который является довольно тяжелым, и этот код должен выполняться много раз (около 300 различных информационных фреймов) в течение короткого времени.Вызов collect() не кажется идеальным подходом.

Есть ли способы получить желаемый результат, не вызывая этот вызов collect()?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...