Hive高级建表技巧总结

目录

[1 分区表](#1 分区表)

[2 外部表](#2 外部表)

[3 ARRAY类型](#3 ARRAY类型)

[4 MAP类型](#4 MAP类型)

[5 STRUCT类型](#5 STRUCT类型)

[6 动态分区](#6 动态分区)

[7 表的生命周期管理](#7 表的生命周期管理)

7.1创建临时表

[7.2 设置表的生存时间(TTL)](#7.2 设置表的生存时间(TTL))

[8 存储格式优化](#8 存储格式优化)

[8.1 ORC格式](#8.1 ORC格式)

[8.2 Parquet格式](#8.2 Parquet格式)

[9 实战案例](#9 实战案例)

[如果觉得本文对你有帮助,想进一步学习SQL语言这门艺术的,那么不妨也可以选择去看看我的博客专栏 ,部分内容如下:](#如果觉得本文对你有帮助,想进一步学习SQL语言这门艺术的,那么不妨也可以选择去看看我的博客专栏 ,部分内容如下:)

数字化建设通关指南

[专栏 原价99,现在活动价59.9,按照阶梯式增长,直到恢复原价。](#专栏 原价99,现在活动价59.9,按照阶梯式增长,直到恢复原价。)


1 分区表

分区表可以提高查询效率

sql 复制代码
CREATE TABLE partition_table (
   id INT,
   name STRING
)
PARTITIONED BY (dt STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';

2 外部表

外部表适用于数据已存在于HDFS的情况:

sql 复制代码
CREATE EXTERNAL TABLE external_table (
   id INT,
   name STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LOCATION '/user/hive/warehouse/external_table';

3 ARRAY类型

sql 复制代码
CREATE TABLE employees (
    name STRING,
    skills ARRAY<STRING>
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
COLLECTION ITEMS TERMINATED BY ':';

4 MAP类型

sql 复制代码
CREATE TABLE user_attributes (
    user_id INT,
    attributes MAP<STRING, STRING>
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
COLLECTION ITEMS TERMINATED BY ':'
MAP KEYS TERMINATED BY '#';

5 STRUCT类型

sql 复制代码
CREATE TABLE complex_types (
    id INT,
    contact STRUCT<phone:STRING, email:STRING>
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
COLLECTION ITEMS TERMINATED BY ':';

6 动态分区

动态分区允许在插入数据时自动创建分区,非常适合处理大量分区的场景。

sql 复制代码
SET hive.exec.dynamic.partition=true;
SET hive.exec.dynamic.partition.mode=nonstrict;

CREATE TABLE sales (
    id INT,
    amount DOUBLE,
    date STRING
)
PARTITIONED BY (year INT, month INT);

INSERT OVERWRITE TABLE sales
PARTITION(year, month)
SELECT id, amount, date, 
       YEAR(date) as year, 
       MONTH(date) as month 
FROM raw_sales;

7 表的生命周期管理

7.1创建临时表

临时表只在当前会话中有效,会话结束后自动删除。

sql 复制代码
CREATE TEMPORARY TABLE temp_stats (
    metric STRING,
    value DOUBLE
);

7.2 设置表的生存时间(TTL)

sql 复制代码
CREATE TABLE expiring_logs (
    log_time TIMESTAMP,
    event STRING
)
TBLPROPERTIES ('transient_lastDdlTime'='1635724800');

ALTER TABLE expiring_logs 
SET TBLPROPERTIES ('lifetime'='30d');

8 存储格式优化

8.1 ORC格式

sql 复制代码
CREATE TABLE orc_table (
    id INT,
    name STRING
)
STORED AS ORC
TBLPROPERTIES ("orc.compress"="SNAPPY");

8.2 Parquet格式

sql 复制代码
CREATE TABLE parquet_table (
    id INT,
    name STRING
)
STORED AS PARQUET;

9 实战案例

假设我们需要设计一个高效的日志分析系统,可以这样构建表结构:

sql 复制代码
-- 创建原始日志表
CREATE EXTERNAL TABLE raw_logs (
    log_time TIMESTAMP,
    user_id STRING,
    ip STRING,
    action STRING,
    details STRING
)
PARTITIONED BY (date STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
LOCATION '/data/raw_logs';

-- 创建优化后的分析表
CREATE TABLE analyzed_logs (
    log_hour TIMESTAMP,
    user_id STRING,
    action STRING,
    action_count INT
)
PARTITIONED BY (date STRING)
CLUSTERED BY (user_id) INTO 32 BUCKETS
STORED AS ORC
TBLPROPERTIES ("orc.compress"="SNAPPY");

-- 使用动态分区插入数据
INSERT OVERWRITE TABLE analyzed_logs
PARTITION (date)
SELECT 
    FLOOR(log_time TO HOUR) as log_hour,
    user_id,
    action,
    COUNT(*) as action_count,
    TO_DATE(log_time) as date
FROM raw_logs
GROUP BY 
    FLOOR(log_time TO HOUR),
    user_id,
    action,
    TO_DATE(log_time);

这个设计充分利用了分区、分桶和列式存储的优势,可以高效地支持各种分析查询。

如果觉得本文对你有帮助,想进一步学习SQL语言这门艺术的,那么不妨也可以选择去看看我的博客专栏 ,部分内容如下:
数字化建设通关指南
专栏 原价99,现在活动价59.9,按照阶梯式增长,直到恢复原价。

具体专栏链接如下:

​​​​​​数字化建设通关指南_莫叫石榴姐的博客-CSDN博客

相关推荐
艾莉丝努力练剑20 分钟前
【Python基础:语法第一课】Python 基础语法详解:变量、类型、动态特性与运算符实战,构建完整的编程基础认知体系
大数据·人工智能·爬虫·python·pycharm·编辑器
智能相对论20 分钟前
10万人共同选择的背后,Rokid乐奇有自己的“破圈秘籍”
大数据·智能眼镜
人大博士的交易之路22 分钟前
龙虎榜——20251128
大数据·数学建模·数据挖掘·数据分析·缠论·龙虎榜·道琼斯结构
YJlio1 小时前
ShareEnum 学习笔记(9.5):内网共享体检——开放共享、匿名访问与权限风险
大数据·笔记·学习
wang_yb1 小时前
告别盲人摸象,数据分析的抽样方法总结
大数据·databook
合作小小程序员小小店2 小时前
图书管理系统,基于winform+sql sever,开发语言c#,数据库mysql
开发语言·数据库·sql·microsoft·c#
dalalajjl2 小时前
每个Python开发者都应该试试知道创宇AiPy!工作效率提升500%的秘密武器
大数据·人工智能
p***92488 小时前
深入理解与实战SQL IFNULL()函数
数据库·sql·oracle
2501_9416233210 小时前
人工智能赋能智慧农业互联网应用:智能种植、农业数据分析与产量优化实践探索》
大数据·人工智能
YangYang9YangYan11 小时前
网络安全专业职业能力认证发展路径指南
大数据·人工智能·安全·web安全