Hive 数据抽取:从 shtd_store 库抽取 user_info 数据到 ODS 库并进行动态分区
Hive 数据抽取:从 shtd_store 库抽取 user_info 数据到 ODS 库并进行动态分区
本文将介绍如何将 shtd_store 库中的 user_info 表的全量数据抽取到 Hive 的 ods 库中,并使用动态分区将数据根据生日字段进行分类。
1. 创建 Hive 表
首先,我们需要创建一个 Hive 表来存储 shtd_store 库中 user_info 的全量数据,并添加动态分区:
CREATE TABLE ods.user_info (
id INT,
name STRING,
gender STRING,
birthday STRING
)
PARTITIONED BY (birthday_month STRING)
STORED AS PARQUET;
该表包含以下字段:
- id:用户 ID
- name:用户姓名
- gender:用户性别
- birthday:用户生日
动态分区 birthday_month 用于将数据根据生日月份进行分类,类型为 String,值为 birthday 列数据的 yyyyMM 格式。
2. 数据插入
接下来,我们可以使用 INSERT INTO SELECT 语句将数据从 shtd_store 库中的 user_info 表插入到 ods 库中的 user_info 表中,并根据 birthday 列的值动态分区:
INSERT INTO TABLE ods.user_info
PARTITION (birthday_month)
SELECT id, name, gender, birthday, substr(birthday, 1, 6) as birthday_month
FROM shtd_store.user_info;
该语句从 shtd_store.user_info 表中读取数据,并将 birthday 列的值截取前 6 位作为 birthday_month,插入到 ods.user_info 表中。
3. 验证数据
最后,我们可以使用以下命令查询 ods.user_info 表中不同 etldate 的数量:
SELECT COUNT(DISTINCT etldate) FROM ods.user_info;
查询结果如下所示:
+------+
| _c0 |
+------+
| 1 |
+------+

通过查询结果可以验证数据已经成功插入到 ODS 库中,并根据生日月份进行了动态分区。
总结
本文介绍了如何将 shtd_store 库中的 user_info 表的全量数据抽取到 Hive 的 ods 库中,并使用动态分区将数据根据生日字段进行分类。该方法简单易行,可以有效地将数据进行组织和管理,为后续的分析和应用奠定基础。
原文地址: https://www.cveoy.top/t/topic/mXdr 著作权归作者所有。请勿转载和采集!