在 Hive 中建表主要使用 HiveQL(类 SQL),核心语法是 CREATE TABLE。下面从基础到常见场景给你系统讲一下。
CREATE TABLE IF NOT EXISTS db_name.table_name (
id INT,
name STRING,
age INT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
说明:
IF NOT EXISTS:表存在时不报错ROW FORMAT DELIMITED:指定行格式FIELDS TERMINATED BY ',':字段分隔符STORED AS TEXTFILE:存储格式(默认)CREATE TABLE test.user_info (
user_id BIGINT,
user_name STRING
)
STORED AS PARQUET;
或者先切库:
USE test;
CREATE TABLE user_info (...);
删除表时,数据和元数据一起删除
CREATE TABLE internal_table (
id INT,
name STRING
);
删除表时,只删元数据,数据保留
CREATE EXTERNAL TABLE external_table (
id INT,
name STRING
)
LOCATION '/user/hive/warehouse/external_table';
| 格式 | 特点 |
|---|---|
| TEXTFILE | 默认,可读但慢 |
| PARQUET | 列式存储,查询快(推荐) |
| ORC | Hive 原生优化格式(推荐) |
| AVRO | 适合 schema 演进 |
示例(ORC):
CREATE TABLE user_orc (
id INT,
name STRING
)
STORED AS ORC;
适合按时间、地区等查询的场景
CREATE TABLE user_log (
user_id BIGINT,
action STRING
)
PARTITIONED BY (dt STRING)
STOREED AS PARQUET;
写入分区:
INSERT INTO user_log PARTITION (dt='2026-01-21')
SELECT user_id, action FROM source_table;
用于提升 JOIN 和采样效率
CREATE TABLE user_bucket (
id INT,
name STRING
)
CLUSTERED BY (id) INTO 4 BUCKETS
STORED AS ORC;
CREATE TABLE new_table
AS
SELECT id, name FROM old_table;
例如 JSON:
CREATE TABLE json_table (
id INT,
name STRING
)
ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe';
DESCRIBE table_name;
DESCRIBE FORMATTED table_name;
如果你有:
我可以帮你直接写一条可用的建表语句。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。