3

我想在我的管道中引入数据质量测试(空字段/最大值/最小值/正则表达式/等...),这基本上会在数据登录到数据库之前消耗 kafta 主题测试数据。

我很难在 Deequ 和 Great Expectations 框架之间做出选择。Deequ 缺乏明确的文档,但具有“异常检测”,可以将以前的扫描与当前扫描进行比较。远大的期望具有非常好的和清晰的文档,因此开销更少。我认为这些框架都不是专门为数据流设计的。

谁能提供一些建议/其他框架建议?

4

2 回答 2

6

正如 Philipp 所观察到的,在大多数情况下,某种批次是对流数据应用测试的好方法(甚至 Spark Streaming 也有效地使用了“小批量”系统)。

也就是说:如果您需要使用流式算法来计算验证所需的指标(例如,维护观察数据的运行计数),则可以将目标指标分解为“状态”和“更新”部分,其中可以是“最后”和“当前”批次的属性(即使每个批次只有一个记录)。改进对这种跨批次指标的支持实际上是我们现在在 Great Expectations 中最积极努力的领域!

这样,我认为 Batch 的概念既深深植根于得到验证的核心概念中,又足够灵活地在流系统中工作。

免责声明:我是《远大前程》的作者之一。(堆栈溢出警报!:))

于 2020-11-06T13:49:07.110 回答
5

您可以对数据进行小批量处理,并将数据质量验证分别应用于每个批次。此外,deequ 允许对数据质量指标进行状态计算,就像 James 已经指出的那样,指标是在两个数据分区上计算然后合并的。你可以在这里找到这方面的例子。

是否有 deequ 的文档中未涵盖的特定示例?您可以在此处找到针对 Spark Dataframe 运行 deequ 的基本示例。此外,同一文件夹中还有更多示例,例如异常检测用例。

免责声明:我是 deequ 的作者之一。

于 2020-11-06T13:08:40.613 回答