pyspark 的用户定义函数 (UDF) 是不是需要单元测试?

Posted

技术标签:

【中文标题】pyspark 的用户定义函数 (UDF) 是不是需要单元测试?【英文标题】:Does user-defined functions (UDF) for pyspark need unit test?pyspark 的用户定义函数 (UDF) 是否需要单元测试? 【发布时间】:2021-04-25 12:37:57 【问题描述】:

我是 pysaprk 的新手,所以我有一个函数,我已经为它编写了单元测试,并且我已经通过使用这个函数为 pyspark 定义了一个 UDF 函数,类似于:

udf_my_function = udf(lambda s: my_function(s), StringType())

我的问题是,如果我已经对my_function() 进行了单元测试,我还需要对udf_my_function 进行单元测试吗?如果是这样,我该怎么写?任何相关的文章或链接也将不胜感激?非常感谢。

【问题讨论】:

【参考方案1】:

从我个人看来,这不是绝对必要的。但有时仍然希望将测试作为进行数据转换的测试套件的一部分。通常它的形式是:

sourceDf = .... # read data from somewhere, or define in test
resultDf = sourceDf.withColumn("result", udf_my_function(col("some_column")))
assertEqual(resultDf, expectedDf)

有几个库可用于为 PySpark 编写单元测试:

spark-testing-base - 支持 Scala 和 Python chispa - 简单易用

也可以使用pytest-spark来简化Spark参数的维护,包括3rd-party包等

【讨论】:

您好,感谢您的回答,我不想在单元测试中实际设置 Spark 会话,任何测试库都可以模拟它吗? 不在这些库中。但你可以这样做:***.com/questions/58666424/…

以上是关于pyspark 的用户定义函数 (UDF) 是不是需要单元测试?的主要内容,如果未能解决你的问题,请参考以下文章

PySpark 用户定义函数 (UDF) 创建新列

在 PySpark Pandas UDF 中指定用户定义函数的正确方法

pyspark中未定义的函数UDF?

PySpark UDF,输入端只有 None 值

从Pyspark UDF调用另一个自定义Python函数

PySpark 传递列表到用户定义函数