首页 > 解决方案 > 在 Spark Scala 中对数组的每个成员应用函数

问题描述

我在数据框中有一列是字符串数据类型的数组。我需要提取字符串的一部分,因此我需要对数组的每个元素应用正则表达式。所以我想使用 scala Dataframe API 来应用它。

regexp_extract($"myString","(\\d+)-(\\d+)",1).cast(LongType) 

在数组的每个成员上。

对一个字符串执行此操作很简单,但是如何对数组的每个项目执行此操作?

标签: scalaapache-sparkapache-spark-sql

解决方案


您可以使用transform将函数应用于每个数组元素:

val df2 = df.withColumn(
    "myString", 
    expr("transform(myString, x -> cast(regexp_extract(x, '(\\\\d+)-(\\\\d+)',1) as bigint))")
)

推荐阅读