在 Spark 列/数据框上编写自定义 Spark 函数

Posted

技术标签:

【中文标题】在 Spark 列/数据框上编写自定义 Spark 函数【英文标题】:Writing Custom Spark functions on Spark columns/ Dataframe 【发布时间】:2016-03-16 21:36:24 【问题描述】:

我想通过删除重音来规范作者姓名

Input:  orčpžsíáýd
Output: orcpzsiayd

下面的代码将允许我实现这一点。我怎么不知道如何使用我的输入是数据框 col 的 spark 函数来做到这一点。

def stringNormalizer(c : Column) = (
    import org.apache.commons.lang.StringUtils
    return StringUtils.stripAccents(c.toString)
)

我应该可以这样称呼它

val normalizedAuthor = flat_author.withColumn("NormalizedAuthor",      
stringNormalizer(df_article("authors")))

我刚刚开始学习 Spark。所以请让我知道是否有更好的方法可以在不使用 UDF 的情况下实现这一目标。

【问题讨论】:

【参考方案1】:

它需要一个 udf:

val stringNormalizer = udf((s: String) => StringUtils.stripAccents(s))

df_article.select(stringNormalizer(col("authors")))

【讨论】:

以上是关于在 Spark 列/数据框上编写自定义 Spark 函数的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 Google Maps API v3 上编写自定义文本?

Spark:如何使用嵌套数组转置和分解列

将自定义函数应用于 spark 数据框组

在 Spark 中将数据框列转换为向量

如何在JAVA中加入没有重复列的Spark数据框

如何在JAVA中加入没有重复列的Spark数据框