python - pyspark 的用户定义函数 (UDF) 是否需要单元测试?
问题描述
我是 pysaprk 的新手,所以我有一个函数并且我已经为它编写了单元测试,并且我已经通过使用这个函数为 pyspark 定义了一个 UDF 函数,例如:
udf_my_function = udf(lambda s: my_function(s), StringType())
我的问题是如果我已经有单元测试my_function()
,我需要单元测试udf_my_function
吗?如果是这样,我该怎么写?任何相关的文章或链接也将不胜感激?非常感谢。
解决方案
从我个人看来,这不是绝对必要的。但有时仍然希望将测试作为进行数据转换的测试套件的一部分。通常它将具有以下形式:
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 包等。
推荐阅读
- spring - 动态@Where 参数
- c# - 将图片从 webapi 上传到 blob 存储时,如何验证扩展名和图片大小?
- docker - 如何正确配置 LogStash 以从 RabbitMQ 读取并将输出写入文件?
- c++ - 了解 C++ 指针生命周期/僵尸指针
- macos - 在 Mac OS 上安装不起作用,JDK 8 Update 无法打开,因为 Apple 无法检查它是否存在恶意软件
- java - Broadleaf 未构建或从 Java > 8 开始:无法启动嵌入式 Tomcat
- python - 映射一个类似sql的查询来过滤python中的字典列表
- php - 自定义模块 Drupal 8 的 Twig 模板中的访问变量
- c# - 如何设置鼠标滚轮滚动以在具有焦点的组件上工作,而不是在鼠标指针所在的组件上工作?
- swift - 文件夹的 macOS 安全范围 URL 书签