python - 如何拆分 Spark 列中所有字段的字符串并获取返回的拆分字符串列表的长度?
问题描述
我目前正在尝试获取特定 IP 正在运行的服务数量,这些服务位于一service
列中,存储为StringType()
Spark DataFrame 中的 a 并通过逗号分隔。如何在每个字段中拆分字符串(拆分基于逗号),然后汇总每个字段的返回列表的长度?
解决方案
使用 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
推荐阅读
- c++ - C++ - 奇数互易不等式
- sql - Jasper 报告 - 如何使用 SQL 将日期参数作为“日”、“月”、“年”部分从 java 传递到 jasper 报告
- generics - dart 如何获取带索引的枚举?
- reactjs - componentDidMount 中有函数调用时酶挂载失败
- c++ - 在不使用除法/取模的情况下将随机整数裁剪为一系列值
- java - 递归调用方法
- typescript - Typescript如何使用接口的属性来约束函数参数
- java - 错误:类 CatatanAdapter 中的构造函数 CatatanAdapter 不能应用于给定类型
- perl - 如何将 if/else 更改为哈希函数?perl
- c - 链表 - 获取分段错误