当前位置: 首页 > news >正文

Spark流水线数据质量检查组件

1.组件说明

该组件提供了一个可视化、交互式的数据质量规则设计器,支持多种校验类型和参数配置,便于灵活定义和管理数据校验逻辑。

适用于需要灵活配置数据质量校验规则的场景,在数据从数据源抽取、转换并加载到数据仓库的ETL过程中,添加数据质量检查组件,对每一步的数据进行质量检查。例如,在数据抽取后检查数据的完整性,在转换过程中检查数据的一致性和准确性,确保只有符合质量要求的数据才能进入数据仓库,避免错误数据对后续数据分析和决策的影响。

2.组件主要功能

  1. 规则级别与描述设置

    • 支持选择校验级别(错误/Error 或 警告/Warning)。
    • 支持输入规则描述。
  2. 约束条件管理

    • 支持添加、删除多个约束条件。
    • 每个约束可选择不同的校验类型(如:数据集大小、列完整性、唯一性、主键检查、非负值、最小/最大/平均值、模式匹配、自定义条件等)。
    • 根据不同类型动态渲染所需的参数输入项(如列名、操作符、期望值、区间、允许的值、自定义表达式等)。
    • 支持操作符选择(如等于、不等于、大于、小于、区间等),部分类型支持区间输入。
    校验类型 val说明适用场景与含义
    hasSize数据集大小校验数据集的总行数是否满足指定条件(如等于/大于/小于某个值或在某个区间内)。
    isComplete列完整性校验指定列是否不存在空值(即该列所有行都必须有值)。
    isUnique列唯一性校验指定列的值是否唯一(即该列不能有重复值)。
    isPrimaryKey主键检查校验指定列是否为主键(通常要求唯一且非空)。
    isContainedIn值在集合中校验指定列的值是否都包含在给定的值集合内。
    isNonNegative非负值校验指定列的所有值是否都大于等于 0。
    hasPattern模式匹配校验指定列的值是否都符合某种正则表达式模式(如手机号、邮箱等格式校验)。
    satisfies自定义条件支持自定义表达式校验,如“column1 > column2”等复杂逻辑。
    hasMin最小值校验指定列的最小值是否满足条件(如大于/小于/等于某个值或在区间内)。
    hasMax最大值校验指定列的最大值是否满足条件(如大于/小于/等于某个值或在区间内)。
    hasMean平均值校验指定列的平均值是否满足条件(如大于/小于/等于某个值或在区间内)。

    说明:

    • 部分类型(如 hasSize、hasMin、hasMax、hasMean)支持操作符选择(等于、不等于、大于、小于、区间等)。
    • isContainedIn 需要填写允许的值集合。
    • satisfies 需要填写自定义表达式和条件名称。
    • 其他类型通常需要指定列名。

3. 组件演示

3.1 创建任务

  • 入口:通过顶部菜单栏选择 任务开发,或通过快捷入口 快速创建任务

  • 任务类型:选择 SparkPipeline

3.2 配置任务

点击任务名称,进入任务详情页。任务节点如下

使用MockData节点生成100条测试数据

  • id列类型为STRING,不为空

  • age列类型为INT,可为空

在这里插入图片描述

使用DataProfiling探索数据

使用Deequ进行数据质量检查

规则定义如下:

  • 数据集大小在10到100之间

  • id列不能为空

  • age列值唯一

  • age列值最小值在10 - 20之间

  • age列最大值小于等于100

  • age列非负数

  • id列为主键列

在这里插入图片描述
在这里插入图片描述

最后通过TableShow对各节点结果可视化展示

3.3 结果查看

模拟数据结果:

可自定义图表对结果进行可视化

在这里插入图片描述

数据探查结果:

在这里插入图片描述

数据质量检测结果:

从探查结果可见:

age列最小值为3,最大值为97,规则age列值最小值在10 - 20不通过,规则age列最大值小于等于100通过。

🔗 平台体验地址:DataStudio (http://1.94.182.15:8090)

Spark流水线数据质量检查

http://www.lryc.cn/news/581580.html

相关文章:

  • UNet改进(16):稀疏注意力(Sparse Attention)在UNet中的应用与优化策略
  • Redis集群和 zookeeper 实现分布式锁的优势和劣势
  • 物联网实施与运维【路由器/网关配置】+智能楼道系统
  • python库 dateutil 库的各种案例的使用详解
  • 【Note】《Kafka: The Definitive Guide》第三章: Kafka 生产者深入解析:如何高效写入 Kafka 消息队列
  • Android studio在点击运行按钮时执行过程中输出的compileDebugKotlin 这个任务是由gradle执行的吗
  • 升级AGP(Android Gradle plugin)和gradle的版本可以提高kapt的执行速度吗
  • 【python】对纯二进制向量(仅包含 0 和 1,长度为 8 或 16)的检测和提取
  • 基于腾讯云开发与“人·事·财·物”架构理念的家政预约小程序设计与实现
  • 【Python练习】030. 编写一个函数,实现字符串的反转
  • Python 中 ffmpeg-python 库的详细使用
  • 一条 SQL 语句的内部执行流程详解(MySQL为例)
  • 2025 JuniorCryptCTF re 部分wp
  • 重力翻转者:原创趣味小游戏
  • 前端开发常见问题(从布局到性能优化)
  • 【libm】 10 rem_pio2函数 (rem_pio2.rs)
  • 人工智能之数学基础:线性回归算法的矩阵参数求导
  • 传统微商困境与开源链动2+1模式、AI智能名片及S2B2C商城小程序的转型破局
  • AUTOSAR进阶图解==>AUTOSAR_SWS_V2XFacilities
  • Hadoop MapReduce 入门
  • Hadoop高可用集群搭建
  • k8s-服务发布基础
  • 小菜狗的云计算之旅,学习了解rsync+sersync实现数据实时同步(详细操作步骤)
  • 【Linux网络编程】Socket - UDP
  • 儿童趣味记忆配对游戏
  • 【CSS-15】深入理解CSS transition-duration:掌握过渡动画的时长控制
  • Java的各种各样的生命周期——思考历程
  • 字符函数和字符串函数(下)- 暴力匹配算法
  • ASP.NET Web Pages 安装使用教程
  • 随机森林算法详解:Bagging思想的代表算法