使用DataFrame相等性函数简化PySpark测试

使用DataFrame相等性函数简化PySpark测试

💡 原文英文,约1400词,阅读约需5分钟。
📝

内容提要

介绍了PySpark DataFrame相等性测试函数的重要性以及如何使用它们。这些函数可以简化PySpark单元测试,帮助您检查数据是否符合预期结果,并及早发现错误。其中两个函数是assertDataFrameEqual和assertSchemaEqual,分别用于比较DataFrame的数据和模式。此外,还介绍了用于调试差异的结构化输出功能。此外,还提到了Pandas API on Spark的相等性测试函数,可以用于测试Pandas API on Spark DataFrames的相等性。这些函数将在即将发布的Apache Spark 4.0中提供。

🔎

延伸解读

版本支持与可用性

这些相等性测试函数在 Apache Spark 3.5 和 Databricks Runtime 14.2 中引入,但完整功能将在即将发布的 Apache Spark 4.0 和 DBR 14.3 中提供。DBR 14.2 已支持部分功能。结构化输出调试差异的功能从 Spark 4.0 和 DBR 14.3 开始可用。注意 assertPandasOnSparkEqual 已弃用,计划在 Spark 4.0.0 中移除。

调试差异的结构化输出

当使用 assertDataFrameEqual 比较较大的 DataFrame 时,可以设置 includeDiffRows=True 参数。这样在断言失败时,异常对象 e.data 会包含不同的行数据,可以直接用这些数据创建新的 DataFrame 进行进一步分析。这避免了手动编写代码从原始 DataFrame 中提取差异行,简化了调试过程。

Pandas API on Spark 的兼容性

Pandas API on Spark 提供了 assert_frame_equal、assert_series_equal 和 assert_index_equal 函数,其 API 与 pandas 测试工具函数完全一致。这意味着现有的 pandas 测试代码无需修改即可用于 Pandas API on Spark。这些函数还支持与 pandas 对象直接比较,便于在不同 DataFrame 库之间进行兼容性检查。

❓

Q&A

PySpark DataFrame相等性测试函数的主要作用是什么?

主要作用是简化PySpark单元测试,帮助检查数据是否符合预期结果,及早发现错误。

assertDataFrameEqual和assertSchemaEqual函数有什么区别?

assertDataFrameEqual比较两个DataFrame的数据和模式,而assertSchemaEqual仅比较两个DataFrame的模式,不比较行数据。

如何使用assertDataFrameEqual函数进行测试?

可以通过一行代码调用assertDataFrameEqual,传入两个DataFrame进行比较,并返回差异描述信息。

在调试DataFrame差异时,如何获取不同的行数据?

可以使用assertDataFrameEqual的includeDiffRows参数,捕获不同的行数据以便进一步分析。

Pandas API on Spark用户可以使用哪些相等性测试函数?

Pandas API on Spark用户可以使用assert_frame_equal、assert_series_equal和assert_index_equal等函数进行相等性测试。

即将发布的Apache Spark 4.0中将提供哪些新功能?

将提供完整的PySpark DataFrame相等性测试函数,包括assertDataFrameEqual和assertSchemaEqual等。

🏷️

标签

➡️

继续阅读