hive基础-数据模型

本文深入解析了Hive中的数据模型,包括表、外部表、分区和桶的概念及使用场景。详细介绍了各种数据模型的创建、修改和删除的DDL语句,以及DML操作示例。同时,提供了关于存储格式、压缩支持和数据类型的支持信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hive 中所有的数据都存储在 HDFS 中,Hive 中包含以下数据模型:

  • Table:

  • External Table:

  • Partition:

  • Bucket:
    (1)表table:一个表就是hdfs中的一个目录
    内部表:默认设置,数据目录由hive默认设置,可以修改。hadoop->hive时,数据会迁移目录。hive删除会级联删除hadoop物理数据。
    外部表:元数据删除时不删除物理数据,不迁移数据目录。
    (2)区Partition:表内的一个区就是表的目录下的一个子目录:
    建表语句语法区分
    查询时需要指定分区字段,提升效率。
    (3)桶Bucket:如果有分区,那么桶就是区下的一个单位,如果表内没有区,那么桶直接就是表下的单位,桶一般是文件的形式。
    按字段hash计算,数据分组,抽样运算时用的较多。

  • DDL

  • DML
    示例代码

CREATE DATABASE IF NOT EXISTS shopping COMMENT 'stores all shopping basket data' LOCATION '/user/retail/hive/SHOPPING.db' 
	WITH DBPROPERTIES ('purpose' = 'testing');
ALTER DATABASE shopping SET DBPROPERTIES ('department' = 'SALES');
DROP DATABASE database_name [RESTRICT|CASCADE];
SHOW DATABASES [ LIKE 'identifier_with_wildcards' ];
SHOW TABLES IN retail;
CREATE TEMPORARY TABLE states (state STRING);
ALTER TABLE states RENAME TO states_old;
ALTER TABLE states CONCATENATE;
ALTER TABLE ids ADD PARTITION (datestamp='2016-05-30') location '/user/demo/ids/2016-05-30';
MSCK REPAIR TABLE ids_internal;
ALTER TABLE RETAIL.TRANSACTIONS ADD COLUMNS (loyalty_card boolean);

ALTER TABLE transactions ENABLE NO_DROP;
ALTER TABLE transactions ENABLE OFFLINE;

CREATE TABLE transactions_test LIKE transactions;

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename
INSERT [OVERWRITE] TABLE tablename1 [IF NOT EXISTS]
	SELECT select_fields FROM from_statement;
INSERT OVERWRITE DIRECTORY 'exampleoutput' ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
	SELECT persid, firstname, lastname FROM person;
CREATE TABLE blank_tablename LIKE tablename;	
variance()
percentile_approx() 
select login_account,max(user_id) from tb_user group by login_account;

官方手册

### Hive 数据分析模型及其构建方法 Hive 是一种基于 Hadoop 的数据仓库工具,能够支持大规模数据存储、查询和分析[^1]。为了更好地利用 Hive 进行数据分析,通常会采用分层建模的方法来优化数据处理流程。 #### 一、Hive 数据分析模型概述 在实际应用中,Hive 常用于构建企业的数据仓库系统。其核心目标是对海量数据进行高效的管理和分析。通过分层建模的方式,可以将原始数据逐步加工成更易于理解和使用的结构化数据[^2]。常见的分层架构包括以下几个层次: - **ODS 层(Operational Data Store)**: 存储未经任何清洗和转换的原始数据- **DWD 层(Data Warehouse Detail)**: 对 ODS 层的数据进行清洗、去重和标准化操作,形成明细事实表。 - **DWS 层(Data Warehouse Summary)**: 在 DWD 层的基础上进一步聚合数据,生成轻度汇总的事实表。 - **ADS 层(Application Data Service)**: 面向具体业务需求,提供高度汇总的结果数据,供报表展示或其他应用程序调用。 这种分层设计有助于提高数据质量、减少冗余计算,并使整个系统的可维护性和扩展性更强[^3]。 #### 二、Hive 数据分析模型的具体构建方法 以下是使用 Hive 实现上述分层建模的一个简单示例: ##### 1. 创建 ODS 表 假设我们有一份日志文件 `access.log`,其中每条记录表示一次用户的访问行为。可以通过如下 SQL 语句创建对应的 ODS 表: ```sql CREATE EXTERNAL TABLE IF NOT EXISTS ods_access_log ( user_id STRING, access_time TIMESTAMP, page_url STRING, referer STRING ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION '/user/hive/warehouse/ods/access_log'; ``` ##### 2. 清洗并加载到 DWD 表 接下来,在 ODS 表基础上清理异常值并将有效数据导入至 DWD 表中: ```sql INSERT INTO dwd_user_page_view SELECT user_id, CAST(access_time AS DATE), page_url FROM ods_access_log WHERE LENGTH(user_id) > 0 AND page_url IS NOT NULL; ``` 此处定义了一个名为 `dwd_user_page_view` 的新表作为用户页面浏览事件的明细记录。 ##### 3. 聚合生成 DWS 表 继续向上一层级移动,我们可以按天统计每位用户的总访问次数: ```sql INSERT INTO dws_daily_user_visit_count SELECT user_id, visit_date, COUNT(*) as total_visits FROM dwd_user_page_view GROUP BY user_id, visit_date; ``` 这一步骤产生的结果就是每天每个用户的独立访问计数。 ##### 4. 提取 ADS 报告所需指标 最后,如果要制作一份关于活跃用户的月报,则可以从 DWS 表抽取相应字段完成最终输出: ```sql SELECT YEAR(visit_date) year_month, MONTH(visit_date) month_num, SUM(total_visits) monthly_active_users FROM dws_daily_user_visit_count GROUP BY YEAR(visit_date), MONTH(visit_date); ``` 以上过程展示了如何借助 Hive 完成分层建模的过程,从而满足不同层面的应用场景需求。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值