hive数据库的DDL操作

Hive的表类型

在Hive的学习中,有一个非常重要的知识点,那就是Hive的表类型。

Hive的表类型主要有:内部表(受控表)、外部表、临时表、分区表、分桶表。

1:内部表

复制代码
  内部表又称受控表,hive默认创建的表类型为内部表,当删除内部表的时候,数据和元数据都会被删除。

2:外部表

复制代码
  创建外部表需要使用EXTERNAL关键字,当删除外部表的时候,只删除元数据,不删除数据。

  使用场景,例如:某个公司的原始日志数据存放在一个目录中,多个部门对这些原始数据进行分析,那么创建外部表就是比较好的选择了,因为即使删除了外部表,原始数据并不会被删除。

3临时表(不支持分区)

复制代码
 创建临.时表,使用TEMPORARY关键字,临时表只在当前会话中存在,当会话结束后,临时表会自动删除。

4分区表

复制代码
 创建分区表是为了防止暴力扫描全表,提高查询效率。分区字段在源文件中是不存在的,需要在添加数据的时候手动指定。

 每一个分区对应一个目录。通过partitioned by来在创建分区表的时候添加分区字段。

  使用场景:可以通过分区表,将每天搜集的数据进行区分,查询统计的时候通过指定分区,提高查询效率。

5.分桶表

复制代码
桶是比表或分区更为细粒度的数据范围划分。针对某一列进行桶的组织,对列值哈希,然后除以桶的个数求余,决定将该条记录存放到哪个桶中。

需要先设置:set hive.enforce.bucketing = true;

再创建分桶表:

二 创建表的语法

1.创建普通表的语法

CREATE EXTERNAL TABLE IF NOT EXISTS table_name

(col_name data_type \[COMMENT col_comment\], ...)

COMMENT table_comment

PARTITIONED BY (col_name data_type \[COMMENT col_comment\], ...)

CLUSTERED BY (col_name, col_name, ...)\[SORTED BY (col_name \[ASC\|DESC\], ...)\] INTO num_buckets BUCKETS

ROW FORMAT row_format DELIMITED 或 SERDE

STORED AS file_format

LOCATION hdfs_path

1.EXTERNAL 创建外部表的关键字.

2.COMMENT 可以为表与字段增加描述信息.

3.partitioned by 创建分区表的关键语句.

4.clustered by 创建分桶表的关键语句.

5.ROW FORMAT 行格式,指定以什么分割原始数据.

6.STORED AS 以何种文件存储格式进行存储.

7.LOCATION 在使用external创建外部表的同时需要指定一个指向实际数据的路径.

8.IF NOT EXIST 若相同名字的表已经存在,则执行建表语句抛出异常;如果加上if not exists,则不会报该表已经存在的异常,会显示OK,并且不在创建同名表.

9.SERDE 序列化与反序列化.

2.创建外部表的列子

需要先设置:set hive.enforce.bucketing = true;

复制代码
再创建分桶表:

create table emp_bu(

empno int,

    ename string,

    job string,

    mgr int,

    hiredate string,

    sal double,

    comm double,

    deptno int

 )CLUSTERED BY(deptno) INTO 4 BUCKETS

row format delimited fields terminated by '\t';

三修改表

修改 表的名称:

ALTER TABLE table_name RENAME TO new_table_name;

删除表

TRUNCATE TABLE table_name PARTITION (partition_column = partition_col_value, ...);

查看数据库列表

-- 语法

SHOW (DATABASES|SCHEMAS) LIKE 'identifier_with_wildcards';

-- 示例:

SHOW DATABASES like 'hive*';

LIKE 子句允许使用正则表达式进行过滤,但是 SHOW 语句当中的 LIKE 子句只支持 *(通配符)和 |(条件或)两个符号。例如 employees,emp *,emp * | * ees,所有这些都将匹配名为 employees 的数据库。

  1. 查看表的列表

-- 语法

SHOW TABLES IN database_name 'identifier_with_wildcards';

-- 示例

SHOW TABLES IN default;

  1. 查看视图列表

SHOW VIEWS IN/FROM database_name LIKE 'pattern_with_wildcards'; --仅支持 Hive 2.2.0 +

相关推荐
TTBIGDATA9 小时前
【Ambari Plus】14.Hue 安装
大数据·hadoop·ambari·hdp·hue·cdh·bigtop
小二·11 小时前
RAG + 向量数据库实战:ChromaDB / Milvus / FAISS 选型与性能横评
数据库·milvus·faiss
矜持的左手11 小时前
电子小白的枕边书:电子学(The Art of Electronics)
数据库·restful
吴声子夜歌11 小时前
Redis 5.x——布隆过滤器
数据库·redis·缓存
蓝天下的守望者12 小时前
svt_apb_if里的宏定义问题
运维·服务器·数据库
上海云盾-小余12 小时前
网站频繁遭遇 SQL 注入溯源与原生漏洞修复全流程总结
数据库·sql
数据库小学妹12 小时前
国家区域医疗中心国产化改造实战:数据库选型、跨院区数据互通与踩坑经验
数据库·国产数据库·数据库选型·医疗信息化·信创数据库·医疗信创
AllData公司负责人13 小时前
数据库同步平台|AIIData数据中台实现OceanBase、达梦数据库、OpenGauss、人大金仓、Hive、TDengine 一键接入Doris
大数据·数据库·hive·mysql·oceanbase·tdengine
2603_9547083114 小时前
全维度容错设计,打造微电网安全运行屏障
服务器·网络·数据库·人工智能·分布式·安全