Hive-DDL详解(超详细)


前言

本教程将介绍HiveQL的数据定义语言(DDL),帮助您了解如何在Hive中创建数据库、切换数据库、创建表格以及查看和删除表格。通过学习这些基本操作,您可以更好地组织和管理数据,并进行高效的查询和分析。


HiveQL的数据定义语言(DDL)

1. 创建数据库

创建数据库是在Hive中组织和管理表的第一步。可以使用以下语法来创建一个新的数据库:

CREATE DATABASE database_name;

例如,要创建名为"mydb"的数据库,可以执行以下命令:

CREATE DATABASE mydb;

2. 切换到指定数据库

在Hive中切换到特定的数据库非常简单。使用以下语法将当前会话切换到指定名称的数据库:

USE database_name;

例如,要将当前会话切换到名为mydb的数据库中,可以执行以下命令:

USE mydb;

3. 创建表格

在Hive中,我们可以通过DDL(数据定义语言)来定义和创建表格。下面是一个示例用于创建表格并指定列、数据类型以及其他属性。

(1) 基本形式:

CREATE TABLE table_name (
    column1 data_type,
    column2 data_type,
    ...
)
[ROW FORMAT row_format]
[STORED AS file_format]
[TBLPROPERTIES (property_name=property_value, ...)];

ROW FORMAT row_format:该参数用于指定数据文件的行格式。常见的行格式包括:

  • DELIMITED:默认值,表示使用分隔符(如逗号、制表符等)分隔字段。
  • SERDE serde_name:指定自定义序列化/反序列化类名(SerDe),用于处理非文本数据或特殊数据类型。

STORED AS file_format:该参数用于指定存储文件的格式。常见的存储文件格式包括:

  • TEXTFILE(默认值): 表示以文本形式存储。
  • ORC: 使用ORC (Optimized Row Columnar) 格式进行高效压缩和查询。
  • PARQUET: 使用Parquet列式存储和压缩。

TBLPROPERTIES (property_name=property_value, ...):该参数允许用户为表设置附加属性,以键值对形式提供。可以根据需要添加多个属性,并且每个属性都有一个名称和相应的值。TBLPROPERTIES中设置的常见属性:

  • 'comment'='table_comment': 为表添加注释或描述信息。
  • 'created_by'='username': 记录创建此表记录者用户名信息。
  • 'external'='true/false': 指示是否外部表,默认为false;外部表的数据存储在Hive之外,删除表时不会删除数据。
  • 'location'='hdfs_path': 指定表的存储位置。默认情况下,Hive将使用默认的数据库目录。

(2) 示例:

假设我们想要在"HiveDB" 数据库下面创建一个名为 "employees” 的员工信息表,并具有姓名、年龄和职位三个字段。

首先需要确保已经选择了正确地目标库:

USE HiveDB; 

然后运行如下代码进行建表:

CREATE TABLE employees (
    name STRING,
    age INT,
    position STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
TBLPROPERTIES ('comment'='This is a sample table', 'created_by'='John Doe');

上述示例中,“ROW FORMAT”指定行格式为逗号分隔符,“STORED AS”指定存储格式为TEXTFILE,并且通过“TBLPROPERTIES”设置了注释和创建者信息。

4. 查看表格结构

要查看已创建的表格的结构,可以使用以下命令:

DESCRIBE table_name;

例如,要查看名为"employees" 的表格结构,请执行以下命令:

DESCRIBE employees; 

5. 删除数据库和表格

如果需要删除数据库或者特定的数据表,可以使用以下语法进行操作。

(1) 删除数据库:

注意:删除一个非空的数据库将同时删除该库下所有相关联的数据和对象。

DROP DATABASE database_name [RESTRICT|CASCADE];
  • RESTRICT:如果指定了 RESTRICT 参数,并且在执行 DROP DATABASE 之前发现有其他依赖项存在(比如该数据库下还有表),则会抛出一个错误并终止删除。

  • CASCADE:如果指定了 CASCADE 参数,在执行 DROP DATABASE 之前会先检查是否存在与该数据库关联或属于它子集合内部结构(例如表、视图等)。然后 Hive 将逐个级连地移除这些关系,并最终成功完成 DROP 操作。

例如:

DROP DATABASE mydb CASCADE;

(2) 删除数据表:

DROP TABLE table_name;     

例如:

DROP TABLE employees;     

总结

在本教程中,我们学习了一些重要的HiveQL DDL命令。首先,我们了解到如何使用CREATE DATABASE命令来创建新的数据库,并使用USE命令切换到指定的数据库。然后,我们探讨了如何使用DDL语句来定义并创建表格,在此过程中涵盖了行格式、存储格式以及其他属性设置等内容。

接下来,我们介绍了如何通过DESCRIBE table_name; 命令查看已创建表格的结构信息。最后,在删除方面,我们提供了删除数据库和数据表两种操作方式。

希望本教程对您有所帮助!如有任何疑问或问题,请随时在评论区留言。感谢阅读!

相关推荐

  1. Hive-DDL详解详细

    2023-12-23 06:34:04       35 阅读
  2. Hive-DML详解详细

    2023-12-23 06:34:04       30 阅读
  3. Hive-数据模型详解详细

    2023-12-23 06:34:04       39 阅读
  4. Hive-分区与分桶详解详细

    2023-12-23 06:34:04       34 阅读
  5. shell编程-sort命令详解详细

    2023-12-23 06:34:04       38 阅读
  6. Impala中kudu基础理论详解详细

    2023-12-23 06:34:04       37 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-23 06:34:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-23 06:34:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-23 06:34:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-23 06:34:04       20 阅读

热门阅读

  1. WEB渗透—PHP反序列化(七)

    2023-12-23 06:34:04       36 阅读
  2. KAZE+GTM 图像配准标定 Matlab 实现

    2023-12-23 06:34:04       36 阅读
  3. 达梦的SQL脚本转成Oracle的SQL脚本需要注意什么?

    2023-12-23 06:34:04       40 阅读
  4. 阿里云常用配置:日志采集、OSS、RAM 权限策略

    2023-12-23 06:34:04       43 阅读
  5. Android 13 内置可卸载的搜狗输入法

    2023-12-23 06:34:04       51 阅读
  6. 支持向量机(Support Vector Machine,SVM)算法 简介

    2023-12-23 06:34:04       40 阅读
  7. 746. 使用最小花费爬楼梯

    2023-12-23 06:34:04       39 阅读
  8. 学习ArcGIS的第一天

    2023-12-23 06:34:04       30 阅读
  9. QtRO(Qt Remote Objects)分布式对象远程通信

    2023-12-23 06:34:04       37 阅读
  10. Git常用命令分享

    2023-12-23 06:34:04       35 阅读
  11. Docker基本命令和Docker怎么自己制作镜像

    2023-12-23 06:34:04       43 阅读
  12. CAS机制

    CAS机制

    2023-12-23 06:34:04      41 阅读
  13. 牛客小白月赛84 解题报告

    2023-12-23 06:34:04       37 阅读