首页 > 解决方案 > java.io.NotSerializableException: org.apache.spark.sql.Column 当我使用带有 UDF 的条件创建新列时

问题描述

我根据文本摘要创建了一个数据框,以查找文档频率 (DF) 和逆文档频率 (IDF)。

带有从其中提取的令牌和文档 ID 的已清理语料库的数据框

以下是文档频率和单词标记的列 -

带有单词标记的文档频率

但是,当我尝试使用用户定义的函数计算数据框中每一行的 IDF 时,我得到了提到的错误。

例外

这是 udf(遍历每一行)和函数(计算 IDF)的代码

用户自定义函数

计算idf的函数

标签: scalaapache-spark-sql

解决方案


您可能不需要自己编写函数来计算 IDF,因为它已经在 spark-mllib 中实现,请参阅:

https://spark.apache.org/docs/latest/mllib-feature-extraction.html#tf-idf

此外,如果不了解 calcIDF 函数是如何定义的,我们无法对 NotSerializableException 提供太多帮助。


推荐阅读