performance - 是否可以在多个分区上分别并行运行 Deequ 异常检测
问题描述
我们在多个列上分区了 Spark 数据帧。例如,我们有一个合作伙伴列,可以是 Google、Facebook 和 Bing。我们有一个频道栏,可以是 PLA 和 Text。我们想分别在 Google-PLA、Google-TEXT、Facebook-TEXT 等上运行异常检测,因为它们遵循不同的模式。到目前为止,我发现我可以使用不同的过滤器描述配置 AnomalyCheckConfig,并在检查结果时使用相同的过滤器。但首先我需要过滤掉每个分区组合的数据,然后使用其关联的过滤器运行异常测试。一一连载。有没有办法并行运行它们?我可以对整个数据帧多次使用不同的 AnomalyCheckConfigs 执行 addAnomalyCheck() 并在一次运行中获得验证结果吗?
解决方案
如果您的 Spark DataFrame 中有分区列,则可以VerificationSuite
通过指定要在其中运行异常检测的质量指标的条件,在单个中实例化多个异常检查。假设您要计算Completeness
列c1
的 ,例如,您可以使用 来控制分区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), Some(7.0)),
Completeness("c1", where = Some("c0 > 5")),
Some(AnomalyCheckConfig(CheckLevel.Error, "Second Anomaly check",
Map.empty, Some(0), Some(11)))
)
.run()
推荐阅读
- javascript - 使用箭头键水平滚动
- python - 使用平板电脑启动python脚本
- azure - Jenkins:如果有可用的 Azure VM,则排队作业
- javascript - 来自 JSON 的元素未在 mat-table 中输出
- powershell - 可以使用 Windows GUI 但不能使用 powershell 删除文件,两者都使用管理员权限
- javascript - 呈现动态网页,但找不到我的 javascript 文件
- php - 如何在自定义电子邮件中获取 WordPress 博客名称
- c++ - OpenCL 光线追踪器在 CPU 上工作正常,但在 GPU 上却不是(总是)
- python - 维基百科汇总函数给出了 PageError。未从维基百科获取数据
- laravel - Laravel Valet:安全 TLS 证书在 Ubuntu 上无法正常工作