Наиболее эффективный способ взрыва столбца данных Pyspark - PullRequest
0 голосов
/ 31 марта 2019

У меня очень большой фрейм данных pyspark.Фрейм данных содержит два важных столбца: ключ и токены, связанные с этим ключом.Итак, в каждой строке есть ключ и список токенов:

load_df.show(5)

+--------------------+-----------+ 
|       token        |    key    | 
+--------------------+-----------+
|[-LU4KeI8o, FrWx6...|   h9-1256 |
|[]                  |   h1-2112 |
|[HDOksdh_vv, aIHD...|   e3-0139 |
|[-LU4KeI8o, FrWx6...|   S3-4156 |
+--------------------+-----------+

Теперь я хочу подсчитать, сколько раз каждый токен появлялся относительно разных ключей.Но проблема в том, что я делаю очень медленно.Я хочу знать, каков наилучший способ для этого?

Я пытался взорвать столбец токена и затем считать.

Примерно так:

explode_df = load_df.withColumn('token', F.explode('token'))

load_freq = explode_df.groupby('token')\
                    .count()\
                    .sort('count', ascending=False)

илиthis:

explode_df = load_df.withColumn('token', F.explode('token'))

load_freq = explode_df.groupby('token')\
                    .agg(F.collect_set('key'), F.count(F.col('key')).alias('count'))\
                    .sort('count', ascending=True)

В кадре данных содержится более 250 миллионов строк, и этот метод очень медленный.Интересно, есть ли лучший способ достичь того же результата быстрее и эффективнее.

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