我们在使用flink搭建实时数仓,想知道flink作业是如何做数据质量监控告警的?包括数据及时性、完整性、一致性、准确性等
调研了spark streaming有amazon deequ和apache 
griffin框架来实现,想知道flink作业有没有类似的DQC框架?最好是对原有作业无侵入或者少侵入。
如果没有的话,实时数据质量这块一般是如何实现的呢?
如果每个生产作业都要单独配置一个DQC作业是不是代价太高了?有没有通过metrics暴露数据质量信息的呢?


下面是deequ使用的示例,检查每个微批数据是否满足规则要求。我们也有类似的数据质量检查需求


VerificationSuite().onData(df)
      .addCheck(Check(CheckLevel.Error, "this a unit test")
        .hasSize(_ == 5) // 判断数据量是否是5条
        .isComplete("id") // 判断该列是否全部不为空
        .isUnique("id") // 判断该字段是否是唯一
        .isComplete("productName") // 判断该字段全部不为空
        .isContainedIn("priority", Array("high", "low")) // 该字段仅仅包含这两个字段
        .isNonNegative("numViews") //该字段不包含负数
        .containsURL("description", _ >= 0.5) // 包含url的记录是否超过0.5
        .hasApproxQuantile("numViews", 0.5, _ <= 10)
      )
      .run()

回复