Przeglądaj źródła

chore(tests): hive-import 集成测试骨架 + raw DDL

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
tianyu.chu 2 tygodni temu
rodzic
commit
b40366e90b

+ 43 - 0
tests/integration/datax/hive_import/README.md

@@ -0,0 +1,43 @@
+# DataX hive-import 集成测试
+
+端到端验证 PG `public.app_user_cert_info` → Hive `test.raw_usr_app_user_cert_info_inc_d` 同步。
+
+## 前置条件
+
+- bigdata 用户、发布目录下执行(`-random` 生效的必要条件,见 `bin/common/init.sh` worker 选择逻辑)
+- `datasource/postgresql/dev-poyee-xiaoxu.ini` 由运维维护(真实 PG 连接)
+- Hive `test` 数据库已存在
+- 项目代码 + `datasource/` + `/opt/datax` 同步到 cdhmaster02 / cdhnode01 / cdhnode02 / cdhnode03
+- `conf/workers.ini` 配置当前集群 hostname + 权重
+
+## 执行步骤
+
+1. 在 hive/beeline 执行 `ddl/hive_raw.sql` 建 raw 表
+2. 跑 DataX(本轮用老入口,待新入口 `datax-hive-import-starter` 落地后改命令):
+
+    ```bash
+    bin/datax-multiple-hive-job-starter.sh \
+      -gc tests/integration/datax/hive_import/app_user_cert_info.ini \
+      -start-date <昨日 yyyymmdd> -stop-date <今日 yyyymmdd> \
+      -random
+    ```
+
+## 预期
+
+- 日志里 `selected_worker` 落到 cdhnode01 / cdhnode02 / cdhnode03 之一(权重 1:3:3:3,master 占 1/10)
+- `test.raw_usr_app_user_cert_info_inc_d` 新增 `dt=<昨日>` 分区
+- 该分区行数 = PG `SELECT COUNT(*) FROM public.app_user_cert_info WHERE create_time >= '<昨日>' AND create_time < '<今日>'`
+- Hive 记录里不存在 user_cert_data / cert_no / cert_real_name 三字段
+
+## 回归用途
+
+本套件作为两次回归的共同锚点:
+
+1. workers 外配 + 新集群 hostname 适配(本轮)
+2. `datax-hive-import-starter` 新入口开发完成后端到端等价
+
+## 相关文件
+
+- `ddl/hive_raw.sql`:Hive 建表
+- `app_user_cert_info.ini`:DataX ini
+- PG 侧 DDL:由 DBA 维护,不入库

+ 27 - 0
tests/integration/datax/hive_import/ddl/hive_raw.sql

@@ -0,0 +1,27 @@
+-- Hive raw 层贴源表(集成测试 / 冒烟锚点)
+--
+-- 源:public.app_user_cert_info (PG)
+-- 时间锚点:create_time
+-- 库:test(测试期);正式上线迁到 raw 库,表名与结构保留
+-- 字段选择:
+--   - 敏感字段 user_cert_data / cert_no / cert_real_name 不同步(公司规范"敏感字段不出业务库")
+--   - cert_birthday 本轮原样同步未脱敏;正式 raw 库上线前补"脱敏到月"
+--     (方案见 kb/90 §2.6 后延 ADR 高优先级项:DataX 字段级变换)
+-- 分层规范:raw 层 EXTERNAL + 全字段 STRING + dt 分区,见 kb/20 §7 / §8.1
+
+CREATE EXTERNAL TABLE IF NOT EXISTS test.raw_usr_app_user_cert_info_inc_d (
+    id            STRING COMMENT 'id',
+    user_id       STRING COMMENT '用户 id',
+    cert_birthday STRING COMMENT '证件生日(未脱敏)',
+    cert_sex      STRING COMMENT '证件性别',
+    cert_province STRING COMMENT '证件所在省',
+    cert_city     STRING COMMENT '证件所在市',
+    version       STRING COMMENT '版本',
+    status        STRING COMMENT '状态',
+    del_flag      STRING COMMENT '删除标记',
+    create_time   STRING COMMENT '创建时间(时间锚点)',
+    update_time   STRING COMMENT '更新时间'
+)
+COMMENT '用户证件信息 raw 贴源(冒烟测试)'
+PARTITIONED BY (dt STRING)
+STORED AS ORC;