You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySpark无UDF提取array<string>列所有元素点号前内容

实现方法

你可以直接使用Spark内置的数组高阶函数transform完成需求,全程不需要定义UDF,性能远高于UDF实现,适配Spark 2.4及以上版本。

核心逻辑

transform函数可以直接遍历数组类型列的每一个元素,对每个元素应用你已经写好的substring_index提取逻辑,最终返回长度和原数组一致的处理后新数组。

实现代码

from pyspark.sql import functions as F

df = df.withColumn(
    "address",
    F.expr("transform(all_addresses, elem -> substring_index(elem, '.', 1))")
)

效果说明

处理后对应示例数据的返回结果如下:

  • 原数组["test.a" "random.ac"] 处理后得到 ["test", "random"]
  • 原数组["test.41" "random.23" "test.123"] 处理后得到 ["test", "random", "test"]

如果数组内存在不含.的字符串,substring_index会直接返回原字符串,不会抛出异常。

内容的提问来源于stack exchange,提问作者bakun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 07:21:38