# 大数据校验概述
迁移中心 MgC为多种大数据计算/存储引擎，如Hive、Hbase、Doris和MaxCompute等，提供了一致性校验方法。通过一致性校验，您可以更加放心地进行大数据迁移操作，确保数据的准确性和可靠性，从而避免了数据丢失或不一致的风险。
#### 注意事项
- 创建的源端统计任务和目的端统计任务的统计方式必须保持一致。
- 数据量较大时，对数成功率99.5%属于正常误差范围内。
- HBase安全集群任务与非安全集群任务不能同时执行。HBase安全集群需要加载认证信息，非安全集群连接时需要清除安全集群的认证信息，因此不能同时执行。
- 当源端服务（包含但不限于Lindorm、HBase）因欠费被锁定时，虽然可以正常创建数据连接和校验任务，但由于服务锁定限制了数据访问和操作权限，最终会导致校验任务无法正常执行。在进行数据校验前，请确保源端服务未因欠费被锁定，以避免权限问题。如果服务被锁定，请及时补缴费用以解除锁定。确认服务恢复正常后，重新尝试执行数据校验任务。
- 在进行Hive 2.x与Hive 3.x版本间数据校验时，由于Hive 2.x版本在查询固定长度字符串类型char(N)数据时，如果实际数据长度不满足N长度，Hive会以空格补齐至N长度。而Hive 3.x版本在查询时不会进行这种补齐操作。这可能导致在不同版本间比较结果时出现差异。为了避免因版本差异导致的数据不一致问题，建议使用Beeline作为客户端工具进行作业对数。
- 在完成MRS到MRS集群数据迁移后，如果源端和目的端都使用YARN模式进行校验，需要分开执行校验任务，确保一个任务执行完成后才能执行另一个任务。
- 在进行对数任务时，不支持使用 MRS 3.3.0 及以上版本集群节点的ECS作为执行机，会导致对数任务执行失败。
- 在进行源端Lindorm，目的端Hbase抽样内容校验任务时，如果遇到源端和目的端数据条数不一致导致数据结果差异类型不正确，属于正常现象。这是因为HBase保存数据时会根据rowkey进行字典序排序。当指定了rowkey和limit后，数据的范围是确定的，因此出现偏差属于正常情况。
 
#### 约束与限制
- 创建EMR Delta Lake到MRS Delta Lake数据校验任务存在以下约束与限制：
  - 源端EMR环境的Spark版本为3.3.1时，支持Delta Lake（有元数据）和Delta Lake（无元数据）的数据校验。
  
  - 源端EMR环境的Spark版本为2.4.8时，仅支持Delta Lake（有元数据）的数据校验。
   
- Lindorm、Hbase校验不支持纯冷数据表。
- 校验任务不支持跨天执行，执行过程中如果跨0点将导致校验结果异常，请合理规划任务以避免跨天运行。
- 在进行ClickHouse数据校验时，如果源端阿里云的ClickHouse版本为21.8.15.7，目的端华为云的ClickHouse版本为23.3.2.37，由于这两个版本在处理IPv4和IPv6字段类型以及相关函数计算结果上存在差异，因此无法进行字段校验。
- 在执行Hive数据的日级别增量、小时级增量以及指定日期的校验时，如果分区字段为date类型，且分区值的格式不是标准的YYYY-MM-DD时，系统目前不支持对这种场景进行数据校验。
- HBase（包括云HBase、EMR-HBase、MRS-HBase、CT-HBase等）校验任务仅支持非安全集群（即源端和目的端均为非安全集群）的内容对数。
 
#### 校验方式说明
- **全量校验**：全量对比所有数据，适用于需要对比历史数据的场景。
- **日级增量校验**：依靠元数据中的创建或更新时间，获取数据变化（增量）分区，再进行校验。支持单日或连续多日增量数据的统计，是最常用的校验方式。
- **小时级增量校验**：依靠元数据中的创建或更新时间，获取数据变化（增量）分区，再进行校验。在24小时内自动进行多次校验，可以持续关注数据一致性变化情况。第二日0点自动停止任务。
- **指定日期校验**：仅适用于分区为年月日格式的分区表，支持周期性指定一个或多个连续日期分区进行校验。分区格式不为年月日的表不会进行校验。
- **指定时间校验**：用户可以选择一个时间段，校验该时间段内的数据。只能选择当前时间之前的时间段进行校验。
- **抽样内容校验**：使用源端和目的端的抽样数据进行比对。如果每行参与内容校验的字段所对应的值均一致，则认为源端和目的端数据完全一致。
- **抽样分区校验**：使用源端和目的端的抽样数据进行比对。随机抽取分区进行校验，如果抽样分区的数据一致，则认为源端和目的端数据完全一致。
- **自定义校验**：支持用户通过全量设置Where条件或单表设置SQL语句，精准定位源端与目的端的校验数据范围，并提供Excel批量导入配置能力。
 
#### 支持的源端、目的端组件
| 源端组件                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | 目的端组件                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
|:---|:---|
| - Hive  - Hbase  - Doris  - MaxCompute  - ClickHouse  - 阿里云云数据库ClickHouse  - Delta Lake  - Hudi  - Lindorm   | - Hive  - DLI  - MRS(Doris)  - MRS(Hbase)  - MRS(ClickHouse)  - CloudTable(ClickHouse)  - CloudTable(HBase)  - Delta  - Hudi   |
   
#### 各组件支持的校验方式
| 组件                       | 支持的校验方式                                                                                                                                                                                                                                                                                                                                                            |
|:---|:---|
| Hive                     | - 全量校验  - 日级增量校验  - 小时级增量校验  - 指定日期校验                                                          |
| DLI                      | - 全量校验  - 日级增量校验  - 小时级增量校验  - 指定日期校验                                                          |
| MaxCompute                | - 全量校验  - 日级增量校验  - 小时级增量校验  - 指定日期校验  - 抽样分区校验   |
| Doris                    | - 全量校验  - 日级增量校验  - 小时级增量校验  - 自定义校验                                                                   |
| Hbase                   | - 全量校验  - 指定时间校验  - 抽样内容校验                                                                                                                                            |
| ClickHouse               | - 全量校验  - 自定义校验                                                                                                                                                                                                                     |
| 阿里云云数据库ClickHouse         | - 全量校验  - 自定义校验                                                                                                                                                                                                                      |
| CloudTable(HBase)        | - 全量校验  - 指定时间校验                                                                                                                                                                                                                 |
| CloudTable(ClickHouse) | - 全量校验  - 自定义校验                                                                                                                                                                                                                              |
| Delta                     | - 全量校验  - 日级增量校验  - 小时级增量校验  - 指定日期校验                                                             |
| Lindorm                  | - 全量校验  - 指定时间校验  - 抽样内容校验                                                                                                                                               |
| Hudi                    | - 全量校验  - 日级增量校验  - 小时级增量校验  - 指定日期校验                                                                                  |
   
