Zhonghui

每个不曾起舞的日子,都是对生命的辜负

User Tools

Site Tools


程序:hive:hive

Hive

介绍

  1. Hive是Hadoop的接口层,可以使用SQL访问Hadoop的数据
  2. AI:Apache Hive 是构建在 Hadoop 之上的数据仓库与 SQL 查询系统
  3. Hive vs 关系型数据库:Hive 面向离线/大规模批处理;传统数据库擅长事务与低延迟查询

HiveQL

HiveQL 是Apache Hive 的查询语言,它是一种类似SQL的语言(有一点细微的区别)

# 随便选择5条数据(使用LIMIT限制输出数量)
SELECT * FROM ad_shop_master_latest LIMIT 5;
 
# 使用分区查询
-- 单分区
SELECT * FROM db.t
WHERE dt = '2025-09-15';
 
-- 多级分区
SELECT * FROM db.t
WHERE dt = '2025-09-15' AND country = 'JP';
 
-- 多个取值
SELECT * FROM db.t
WHERE dt IN ('2025-09-14','2025-09-15');
 
-- 范围(字符串日期要写成可比较的格式:YYYY-MM-DD)
SELECT * FROM db.t
WHERE dt BETWEEN '2025-09-01' AND '2025-09-15';
 
# 转移数据
INSERT INTO TABLE tgt SELECT * FROM src;
INSERT OVERWRITE TABLE tgt SELECT * FROM src;
 
# 从旧表查询数据,插入新表
INSERT INTO TABLE ad_mkt_test.ad_shop_master_latest (id, shop_url)
SELECT id, shop_url FROM adimuser_ad_item.ad_shop_master_latest LIMIT 10;
 
# 清空表(清空数据,表结构不变)
TRUNCATE TABLE adimuser_ad_item.ad_shop_master_latest;
 
# 复制表结构
# 仅复制表结构与分区列定义,不含数据
CREATE TABLE tgt LIKE src;
 
# 查看信息
-- 1) 看列结构(列名、类型、注释)
DESCRIBE db_name.table_name;
 
-- 2) 看完整元数据(位置、格式、是否外部表、分区、桶、属性等)
DESCRIBE FORMATTED db_name.table_name;
 
-- 3) 查看建表语句(DDL)
SHOW CREATE TABLE db_name.table_name;
 
-- 4) 列出所有分区(分区表)
SHOW PARTITIONS db_name.table_name;
 
# 查询记录数量
# 精确条数(会扫全表)
SELECT COUNT(*) AS cnt FROM db_name.table_name;

分区(PARTITION)

查询时用 WHERE 过滤分区列

内部表和外部表

/var/www/DokuWikiStick/dokuwiki/data/pages/程序/hive/hive.txt · Last modified: 2025/09/24 01:48 by zhonghui