微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否可以在多个分区上并行运行 Deequ 异常检测

如何解决是否可以在多个分区上并行运行 Deequ 异常检测

我们将 Spark 数据帧分区在多列上。例如,我们有一个合作伙伴栏,可以是 Google、Facebook 和 Bing。我们有一个频道栏,可以是 PLA 和文本。我们想分别在 Google-PLA、Google-TEXT、Facebook-TEXT 等上运行异常检测,因为它们遵循不同的模式。到目前为止,我已经发现我可以使用不同的过滤器描述配置 AnomalyCheckConfig,并在检查结果时使用相同的过滤器。但首先我需要过滤掉每个分区组合的数据,然后使用其关联的过滤器运行异常测试。一一串连。有没有办法并行运行它们?我可以对整个数据帧执行多次使用不同 AnomalyCheckConfigs 的 addAnomalyCheck() 并在一次运行中获得验证结果吗?

解决方法

如果您的 Spark DataFrame 中有分区列,您可以通过指定要运行异常检测的质量指标的 where 条件,在单个 VerificationSuite 中实例化多个异常检查。假设您要计算列 Completenessc1,例如,您可以使用 where = Some("partition = 'GOOGL'") 控制分区。

val verificationResults = VerificationSuite()
  .onData(df)
  ...
  .addAnomalyCheck(
    AbsoluteChangeStrategy(Some(-17.0),Some(7.0)),Completeness("c1",where = Some("c0 <= 5")),Some(AnomalyCheckConfig(CheckLevel.Error,"First Anomaly check",Map.empty,Some(0),Some(11)))
  )
  .addAnomalyCheck(
    AbsoluteChangeStrategy(Some(-17.0),where = Some("c0 > 5")),"Second Anomaly check",Some(11)))
  )
  .run()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。