5.完成DWD层数据采集工作

本文详细介绍了DWD层数据采集的步骤,包括创建数据库、全量覆盖表、仅新增同步表和新增及更新同步表。重点讲解了如何在Hive中操作,涉及数据抽取、清洗、存储和同步,强调了数据安全和验证的重要性。
摘要由CSDN通过智能技术生成

完成 DWD 层数据采集工作一般需要以下几个步骤:

1.明确数据源:即需要采集哪些数据,数据在哪里存储。根据具体的业务需求和数据分析目的,选择合适的数据来源,并确定如何连接和访问该数据源。

2.数据抽取:数据抽取是将原始数据从数据源提取、转换并导入到目标系统的过程。具体可根据数据量大小、数据结构复杂度等因素综合考虑,选择合适的数据抽取方法,如全量抽取、增量抽取、定时任务、事件驱动等方式,以便高效地完成数据采集任务。

3.数据清洗与校验:为了提高数据质量和正确性,需要对采集到的原始数据进行清洗和校验。例如,去除重复数据、处理缺失值、修复错误数据等操作;同时需要对数据进行类型、格式、规范等方面的检查,确保符合业务需求和标准要求。

4.数据存储:数据存储环节包括选择存储介质和建立相应的数据库表结构,以便后续使用。需要根据业务需求和数据分析目的考虑选择哪种存储介质,比如 HDFS、Hive、MySQL 等,然后创建相应的表结构和分区方式。

5.数据同步:由于 DWD 层的数据通常会在后续多个环节中使用,因此需要将采集的数据进行同步,以便其他系统或环节能够实时访问最新的数据状态。可以采用定时调度或者事件驱动等方式,确保数据能够及时更新。

需要注意的是,在完成 DWD 层数据采集工作前,需要先对业务需求、数据分析目的、数据来源、数据质量等因素进行深入分析和评估,以便制定出相应的数据采集方案,确保数据能够满足业务需求和分析要求。

1 创建dwd库

创建 DWD 库一般需要以下步骤:

  1. 打开数据库客户端,输入账号密码登录到 Hive 或其他的数据库系统中。

  2. 在 Hive 中,可以使用以下语句创建一个新的数据库:

    CREATE DATABASE IF NOT EXISTS dwd;

    这段代码将会创建一个名为 dwd 的数据库,如果该数据库不存在,则创建之。

  3. 创建数据库完成后,还需要为该数据库指定相应的数据存储路径。在默认情况下,Hive 会将表数据存储在 HDFS 文件系统上的 /user/hive/warehouse 目录下,因此可以使用以下语句来为 dwd 数据库指定存储路径:

    ALTER DATABASE dwd SET LOCATION 'hdfs://path/to/dwd';

    这段代码将会把 dwd 数据库的存储路径设置为 HDFS 文件系统上的 path/to/dwd 目录下。

  4. 最后,在创建好 dwd 数据库后,即可开始在该库中创建相应的数据表,并进行数据处理和分析了。

需要注意的是,在创建数据库时,为了防止误操作,需要确保使用的账号具备足够的权限才能进行这一操作。同时,在指定数据存储路径时,需要确保该路径有效并且有读写权限,否则将会出现无法正常访问和操作数据库的情况。

drop database if exists yp_dwd cascade;
create database yp_dwd;

2 操作 全量覆盖表

全量覆盖表是指将一张已有的数据库表中的所有数据(即原有数据全部删除)替换为新的数据。操作全量覆盖表一般需要以下步骤:

  1. 准备新的数据文件或清空源数据表。如果你准备使用新的数据来覆盖原有的数据表,那么首先需要将新的数据准备好,并确保数据符合业务需求和标准要求;如果你打算直接清空原有的数据表,请确保删除的数据无误且被及时备份,以备后续恢复之用。

  2. 使用 DROP TABLE 语句删除原有的数据表。例如,下面的代码将会删除名为 table_name 的表:

    DROP TABLE IF EXISTS table_name;
  3. 使用 CREATE TABLE 语句重新创建数据表,并定义相应的字段、类型、格式等信息。例如,下面的代码将创建一个名为 table_name 的数据表,包含 id、name 和 age 三个字段:

    CREATE TABLE table_name ( id INT, name STRING, age INT ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE;
  4. 使用 LOAD DATA 语句将新的数据导入到该表中。例如,下面的代码将会从 /path/to/new_data.csv 中读取数据,并将其插入到名为 table_name 的表中:

    LOAD DATA INPATH '/path/to/new_data.csv' OVERWRITE INTO TABLE table_name;

    注意,这里使用了 OVERWRITE 关键字,表示会覆盖原有数据表的所有内容。

需要注意的是,在操作全量覆盖表时,一定要仔细核对数据和表结构,确保不要误删或丢失重要数据。同时,在导入新的数据时,为了提高效率和数据质量,请根据数据大小和存储方式等因素考虑调整相应的参数,并进行适当的清洗和验证操作。

 准备增量数据

-- 全量覆盖表的 增量
insert into yipin.t_district value('666','888','xxxx市',555,"yyyy");

select * from yipin.t_district where id='666';

路径 

-- todo 1 建表
-- todo 2 全量操作
-- todo 2.1 mysql库.表 ====> sqoop工具 ===> ods表
-- todo 2.2 ods.表 ===> dwd.表
-- todo 2.3 测试
-- todo 3 增量操作
-- todo 3.1 在mysql中 模拟添加 增量数据
-- todo 3.2 清空ods库区域表的数据
-- todo 3.3 mysql库.表 ====> sqoop工具 ===> ods表
-- todo 3.4 ods.表 ===> dwd.表

实现

drop database if exists yp_ods cascade;
create database yp_ods;

drop database if exists yp_dwd cascade;
create database yp_dwd;

-- todo 1 建表
-- todo 1.1 创建ods层的区域表
DROP TABLE if exists yp_ods.t_district;
CREATE TABLE yp_ods.t_district
(
    id string COMMENT '主键ID',
    code string COMMENT '区域编码',
    name string COMMENT '区域名称',
    pid  string COMMENT '父级ID',
    alias string COMMENT '别名'
)
comment '区域字典表'
row format delimited fields terminated by '\t' stored as orc tblproperties ('orc.compress'='ZLIB');

-- todo 1.2 创建dwd层的区域表
--区域字典表(全量覆盖)
DROP TABLE if EXISTS yp_dwd.dim_district;
CREATE TABLE yp_dwd.dim_district(
  id string COMMENT '主键ID',
  code string COMMENT '区域编码',
  name string COMMENT '区域名称',
  pid string COMMENT '父级ID',
  alias string COMMENT '别名')
COMMENT '区域字典表'
row format delimited fields terminated by '\t'
stored as orc
tblproperties ('orc.compress' = 'SNAPPY');

-- todo 2 全量操作
-- todo 2.1 mysql库.表 ====> sqoop工具 ===> ods表
sqoop import \
--connect jdbc:mysql://hadoop01:3306/yipin \
--username root \
--password 123456 \
--query "select * from yipin.t_district where 1 = 1 and \$CONDITIONS" \
--hcatalog-database '
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值