首页 > 解决方案 > pyspark 的用户定义函数 (UDF) 是否需要单元测试?

问题描述

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

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

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

标签: pythonpython-3.xunit-testingpysparkuser-defined-functions

解决方案


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

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

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

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


推荐阅读