【问题标题】:Data testing framework for data streaming (deequ vs Great Expectations)数据流的数据测试框架(deequ vs Great Expectations)
【发布时间】:2021-02-18 23:54:47
【问题描述】:
我想在我的管道中引入数据质量测试(空字段/最大值/最小值/正则表达式/等...),这实际上会在数据登录到数据库之前使用 kafta 主题测试数据。
我很难在 Deequ 和 Great Expectations 框架之间做出选择。 Deequ 缺乏明确的文档,但具有“异常检测”,可以将以前的扫描与当前扫描进行比较。远大的期望具有非常好的和清晰的文档,因此开销更少。我认为这些框架都不是专门为数据流设计的。
谁能提供一些建议/其他框架建议?
【问题讨论】:
标签:
python
qa
amazon-deequ
great-expectations
【解决方案1】:
正如 Philipp 所观察到的,在大多数情况下,某种批次是对流数据应用测试的好方法(甚至 Spark Streaming 也有效地使用了“小批量”系统)。
也就是说:如果您需要使用流式算法来计算验证所需的指标(例如,维护观察数据的运行计数),则可以将目标指标分解为“状态”和“更新”部分,它可以是“最后”和“当前”批次的属性(即使每个批次只有一个记录)。改进对这种跨批次指标的支持实际上是我们现在在 Great Expectations 中最积极努力的领域!
这样一来,我认为批处理的概念既深深植根于得到验证的核心概念中,又足够灵活地在流式系统中工作。
免责声明:我是《远大前程》的作者之一。 (堆栈溢出警报!:))
【解决方案2】:
您可以对数据进行小批量处理,并对每个批次分别应用数据质量验证。此外,deequ 允许对数据质量指标进行状态计算,就像 James 已经指出的那样,指标是在两个数据分区上计算然后合并的。你可以找到这个here的deequ例子。
是否有 deequ 的文档中未涵盖的特定示例?您可以找到针对 Spark Dataframe here 运行 deequ 的基本示例。此外,同一文件夹中还有更多示例,例如异常检测用例。
免责声明:我是 deequ 的作者之一。