Как разделить строку для всех полей в столбце Spark и получить длину возвращенного списка разделенных строк? - PullRequest
0 голосов
/ 07 мая 2019

В настоящее время я пытаюсь получить количество служб, запущенных конкретным IP, и службы находятся в столбце service, хранятся в виде StringType() в кадре данных Spark и разделяются запятыми.Как мне разбить строку (split на основе запятых) в каждом поле, а затем агрегировать длину возвращенного списка для каждого поля?

1 Ответ

1 голос
/ 07 мая 2019

Использование API PySpark:

>>> df = spark.createDataFrame([("10.0.0.1", "session1,session2"), ("10.0.0.2", "session1,session3,session4")], ["ip", "session"])
>>> df.show(100, False)
+--------+--------------------------+
|ip      |session                   |
+--------+--------------------------+
|10.0.0.1|session1,session2         |
|10.0.0.2|session1,session3,session4|
+--------+--------------------------+

>>> from pyspark.sql.functions import *
>>> df = df.withColumn("count", size(split(col("session"), ",")))
>>> df.show(100, False)
+--------+--------------------------+-----+
|ip      |session                   |count|
+--------+--------------------------+-----+
|10.0.0.1|session1,session2         |2    |
|10.0.0.2|session1,session3,session4|3    |
+--------+--------------------------+-----+

Подробнее об API PySpark можно узнать здесь: https://spark.apache.org/docs/latest/api/python/pyspark.sql.html

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