首页 > 解决方案 > 如何拆分 Spark 列中所有字段的字符串并获取返回的拆分字符串列表的长度?

问题描述

我目前正在尝试获取特定 IP 正在运行的服务数量,这些服务位于一service列中,存储为StringType()Spark DataFrame 中的 a 并通过逗号分隔。如何在每个字段中拆分字符串(拆分基于逗号),然后汇总每个字段的返回列表的长度?

标签: pythonapache-sparkpyspark

解决方案


使用 PySpark API:

>>> 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    |
+--------+--------------------------+-----+

您可以在此处了解有关 PySpark API 的更多信息:https ://spark.apache.org/docs/latest/api/python/pyspark.sql.html


推荐阅读