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   |
+------+

count_distinct_etldate.png

通过查询结果可以验证数据已经成功插入到 ODS 库中,并根据生日月份进行了动态分区。

总结

本文介绍了如何将 shtd_store 库中的 user_info 表的全量数据抽取到 Hive 的 ods 库中,并使用动态分区将数据根据生日字段进行分类。该方法简单易行,可以有效地将数据进行组织和管理,为后续的分析和应用奠定基础。


原文地址: https://www.cveoy.top/t/topic/mXdr 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录