#yyds干货盘点#Hive中有多种类型的表?以及各个应用场景是什么

时间:2022-11-26 00:41:08

Hive中有多种类型的表,根据数据存储的方式和管理方式的不同,可以分为以下几种类型:

内部表(Managed Table):数据存储在Hive数据仓库中,由Hive负责管理。

CREATE TABLE table_name (
  column1 data_type,
  column2 data_type,
  ...
) [PARTITIONED BY (partition_column data_type, ...)]

外部表(External Table):数据存储在HDFS或者本地文件系统中,Hive只是对这些数据进行了逻辑上的映射,不会对原始数据进行管理。

CREATE EXTERNAL TABLE table_name (
  column1 data_type,
  column2 data_type,
  ...
) [PARTITIONED BY (partition_column data_type, ...)]
LOCATION 'hdfs_path_or_local_path';

索引表(Indexed Table):在数据仓库表上创建索引,加速查询。

CREATE INDEX index_name
ON TABLE table_name (column_name);

分桶表(Clustered Table):数据按照某一列进行分桶存储,加速查询。

CREATE TABLE table_name (
  column1 data_type,
  column2 data_type,
  ...
)
CLUSTERED BY (column_name) [SORTED BY (sort_column_name [ASC|DESC])]
INTO num_buckets BUCKETS
[PARTITIONED BY (partition_column data_type, ...)];

临时表(Temp Table):只在当前会话中存在的表,会话结束后表会被删除。

CREATE TEMPORARY TABLE table_name (
  column1 data_type,
  column2 data_type,
  ...
) [PARTITIONED BY (partition_column data_type, ...)];

需要根据实际的业务需求选择合适的表类型和对应的建表语句。

需要根据实际的业务需求选择合适的表类型和对应的建表语句。

以下是各个Hive表类型的优缺点以及应用场景的表格形式整理:

表类型 优点 缺点 应用场景
内部表(Managed Table) - 管理方便- 可以跟踪和管理数据- 支持事务管理 - 占用存储空间- 维护和管理需要耗费时间和精力 适用于需要对数据进行长期管理、保留的场景,如数据仓库和报表等。
外部表(External Table) - 节省存储空间- 可以保留原始数据所有权和控制权 - 需要手动维护和管理数据- 不支持事务管理 适用于需要在Hive外部使用数据的场景,如与其他存储系统进行交互等。
索引表(Indexed Table) - 加速查询效率- 可以对特定列进行索引 - 建立索引需要额外存储空间- 不适合频繁进行写操作 适用于需要经常进行查询和筛选操作的场景,如数据分析和数据挖掘等。
分桶表(Clustered Table) - 提高查询和分析效率- 可以按照特定列进行排序 - 需要事先确定分桶数量和分桶列- 不适合频繁进行写操作 适用于需要对数据进行分析和聚合操作的场景,如大数据分析和数据仓库等。
临时表(Temp Table) - 不占用永久存储空间- 可以进行临时性的查询和分析 - 生命周期只在当前会话中存在- 不适合存储需要长期保留的数据 适用于需要进行短期数据处理和分析的场景,如实时计算和临时性的查询等。