Hive——DDL(Data Definition Language)数据定义语句用法详解

1.数据库操作

1.1创建数据库

CREATE DATABASE [IF NOT EXISTS] database_name
[COMMENT database_comment]
[LOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value, ...)];
  • IF NOT EXISTS:可选参数,表示如果数据库已经存在,则不会创建,避免出现重复创建的情况。
  • COMMENT:可选参数,用于添加数据库的注释
  • LOCATION:可选参数,指定数据库的存储路径

在这里插入图片描述

  • WITH DBPROPERTIES:可选参数,用于设置数据库的额外属性

示例:

CREATE DATABASE IF NOT EXISTS mydatabase
COMMENT 'This is my database'
LOCATION '/user/hive/warehouse/mydatabase.db'
WITH DBPROPERTIES ('owner'='yushifu', 'created_date'='2024-04-23');

在这里插入图片描述

在这里插入图片描述

  • 创建一个名为"mydatabase"的数据库,如果该数据库已存在则不会重新创建。
  • 指定了注释为"This is my database",并将其存储路径设置为"/user/hive/warehouse/mydatabase.db"
  • 设置了额外属性"owner"为"yushifu",“created_date"为"2024-04-23”。

1.2 查询数据库

在Hive中,可以使用以下语句来列出所有的数据库,或者使用通配符来匹配数据库名:

SHOW DATABASES [LIKE 'identifier_with_wildcards'];
  • LIKE 'identifier_with_wildcards':可选参数,用于指定要匹配的数据库名

在这里插入图片描述


示例:

- (1)列出所有数据库:

SHOW DATABASES;

在这里插入图片描述
在这里插入图片描述

- (2)列出以my开头的数据库:

show databases like 'my*';

在这里插入图片描述
在这里插入图片描述

- (3)列出以d开头或者m开头的数据库

show databases like 'd*|m* ';

在这里插入图片描述


1.3 查看数据库信息

DESCRIBE DATABASE [EXTENDED] db_name;

在Hive中,DESCRIBE DATABASE EXTENDED命令提供了比普通DESCRIBE DATABASE更详细的数据库信息,包括一些额外的属性和元数据。

使用DESCRIBE DATABASE EXTENDED命令可以获取以下额外的信息:

1. 数据库的所有者(Owner):显示数据库的所有者信息。
2. 创建时间(Create Time):显示数据库创建的时间戳。
3. 位置(Location):显示数据库在Hadoop文件系统中的存储位置。
4. 参数(Parameters):显示数据库的配置参数,如属性、描述等。


示例:

- (1)查看数据库mydatabase的基本信息:

在这里插入图片描述

在这里插入图片描述


- (2)查看数据库mydatabase的详细信息:

在这里插入图片描述

在这里插入图片描述


1.4 修改数据库

  • 用户可以使用alter database命令修改数据库某些信息,其中能够修改的信息包括dbpropertieslocationowner user
  • 需要注意的是:修改数据库location,不会改变当前已有表的路径信息!! 而只是改变后续创建的新表的默认的父目录。
  1. 修改数据库的所有者
ALTER DATABASE db_name SET OWNER [USER|ROLE] owner_name;
  1. 修改数据库的位置
ALTER DATABASE db_name SET LOCATION 'new_location';

这将会修改数据库的存储位置。

  1. 修改数据库的属性
ALTER DATABASE db_name SET DBPROPERTIES (property_name=property_value, ...);

示例:

-- 修改数据库的所有者为 'new_owner'
ALTER DATABASE mydatabase SET OWNER USER new_owner;

-- 修改数据库的存储位置为 '/new_location'
ALTER DATABASE mydatabase SET LOCATION '/new_location';

-- 修改数据库的属性,例如添加或者修改描述
ALTER DATABASE mydatabase SET DBPROPERTIES ('description' = 'New description for my database');


1.5 删除数据库

DROP DATABASE [IF EXISTS] database_name [RESTRICT|CASCADE];

  • RESTRICT:严格模式,若数据库不为空,则会删除失败,默认为该模式
  • CASCADE:级联模式,若数据库不为空,则会将库中的表一并删除

1.6切换数据库

USE database_name


2.数据表操作

2.1 创建表

2.1.1 普通建表

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]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] 
[STORED AS file_format]
[LOCATION hdfs_path]
[TBLPROPERTIES (property_name=property_value, ...)];
  • CREATE: 指定了创建表的操作。

  • TEMPORARY: 可选的关键字,用于创建临时表,该表在当前会话结束时将被删除

  • EXTERNAL: 可选的关键字,用于创建外部表,该表的数据存储在外部位置,Hive只管理元数据,不管理数据文件。外部表,与之相对应的是内部表(管理表)。管理表意味着Hive会完全接管该表,包括元数据和HDFS中的数据。而外部表则意味着Hive只接管元数据,而不完全接管HDFS中的数据

  • IF NOT EXISTS: 可选的关键字,如果表已经存在,则不报错,直接忽略该操作。

  • db_name: 可选的数据库名称,指定了创建表所属的数据库,如果不指定,默认在当前数据库建表

  • table_name: 要创建的表的名称。

  • col_name data_type [COMMENT col_comment]: 表的列定义,包括列名、数据类型,以及可选的列注释。

  • COMMENT table_comment: 可选的表注释,描述整个表的含义。

  • PARTITIONED BY: 可选的子句,用于指定分区列,表将根据这些列的值进行分区存储。(创建分区表)

  • CLUSTERED BY: 可选的子句,用于指定表的分桶列,将表数据分桶存储(创建分桶表)

  • SORTED BY: 可选的子句,用于指定分桶内的数据排序方式

  • ROW FORMAT: 可选的子句,用于指定表中数据的行格式。
    在这里插入图片描述

  • STORED AS: 可选的子句,用于指定表数据的存储格式。
    常用的文件格式有,textfile(默认值),sequence file,orc file、parquet file等等。

  • LOCATION: 可选的子句,用于指定表数据存储的位置,仅在创建外部表时使用。
    在这里插入图片描述
    在这里插入图片描述

  • TBLPROPERTIES: 可选的子句,用于指定表的属性,例如压缩方式、存储格式等。

示例:

在这里插入图片描述

-- 创建名为 "t1" 的表,如果该表不存在则执行创建操作
CREATE TABLE IF NOT EXISTS default.t1
(
    -- 学生ID,整数类型,用于唯一标识学生
    id INT COMMENT 'student\'s id',
    
    -- 学生姓名,字符串类型,存储学生的姓名信息
    name STRING COMMENT 'student\'s name',
    
    -- 学生地址,字符串类型,存储学生的地址信息
    addr STRING COMMENT 'student\'s addr'
)
-- 表的注释,描述该表存储的是学生信息
COMMENT 'student\'s information'
-- 指定行格式为逗号分隔的文本文件
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
-- 指定表数据的存储格式为文本文件
STORED AS TEXTFILE
-- 指定表的属性,包括作者和创建时间
TBLPROPERTIES ('author'='yushifu', 'create_time'='2024-04-23');

在这里插入图片描述

在这里插入图片描述

-- 如果不存在,创建名为 "t2" 的表
CREATE TABLE IF NOT EXISTS default.t2
(
    -- 学生ID,整数类型,用于唯一标识学生
    id INT COMMENT 'student\'s id',
    
    -- 学生姓名,字符串类型,存储学生的姓名信息
    name STRING COMMENT 'student\'s name',
    
    -- 学生地址,字符串类型,存储学生的地址信息
    addr STRING COMMENT 'student\'s addr'
)
-- 表的注释,描述该表存储的是学生信息
COMMENT 'student\'s information'
-- 指定行格式为逗号分隔的文本文件
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','

STORED AS TEXTFILE

-- 指定表数据的存储位置为 '/t2'
LOCATION '/t2'
-- 指定表的属性,包括作者和创建时间
TBLPROPERTIES ('author'='yushifu', 'create_time'='2024-04-23');

在这里插入图片描述


2.1.2 Create Table As Select(CTAS)建表

CREATE TABLE new_table_name
[ROW FORMAT row_format]
[STORED AS file_format]
[LOCATION 'hdfs_path']
[TBLPROPERTIES (property_name = property_value, ...)]
AS
SELECT column1, column2, ...
FROM existing_table_name
[WHERE condition];
  • new_table_name: 新表的名称。
  • ROW FORMAT row_format: 可选项,用于指定新表的行格式。
  • STORED AS file_format: 可选项,用于指定新表的存储文件格式。
  • LOCATION 'hdfs_path': 可选项,指定新表的存储位置。
  • TBLPROPERTIES (property_name = property_value, ...): 可选项,用于指定表级别的属性。
  • AS: 关键字,表示创建表并将其填充为SELECT查询的结果。
  • SELECT column1, column2, ...: SELECT子句用于指定要从现有表中选择的列。
  • FROM existing_table_name: 指定要从中获取数据的现有表。
  • [WHERE condition]: 可选项,用于过滤要选择的行。

示例:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


2.1.3 Create Table Like语法

该语法允许用户复刻一张已经存在的表结构,与上述的CTAS语法不同,该语法创建出来的表中不包含数据。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.1.4 内部表与外部表

内部表:

  • Hive中默认创建的表都是的内部表,有时也被称为管理表
  • 对于内部表,Hive会完全管理表的元数据和数据文件
    在这里插入图片描述
    desc formatted student;查看详细表信息可知表类型。
    在这里插入图片描述
    在这里插入图片描述

删除内部表之后 HDFS的也会删除,因为对于内部表,Hive会完全管理表的元数据和数据文件。
在这里插入图片描述
删除内部表后,HDFS中的文件也会随之删除!
在这里插入图片描述

在这里插入图片描述


外部表:

  • 外部表通常可用于处理其他工具上传的数据文件。
  • 于外部表,Hive只负责管理元数据,不负责管理HDFS中的数据文件
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

2.1.5 SERDE和复杂数据类型

在这里插入图片描述
在这里插入图片描述

若现有如下格式的JSON文件需要由Hive进行分析处理,请考虑如何设计表?

{
  "name": "yushifu",
  "age": 18,
  "hobbies": ["singing", "jumping", "rapping","basketball"],
  "address": {
    "street": "123 Main Street",
    "city": "弗洛里达",
    "country": "USA"
  }
}

在这里插入图片描述

  • 可以考虑使用专门负责JSON文件的JSON Serde。
  • 设计表字段时,表的字段与JSON字符串中的一级字段保持一致。
  • 对于具有嵌套结构的JSON字符串,考虑使用合适复杂数据类型保存其内容。
create table stu
(
    name     string,
    age		 int,
    hobbies	 map<string,int>,
    address  struct<city:string,street:string,postal_code:int>
)
row format serde 'org.apache.hadoop.hive.serde2.JsonSerDe'
location '/user/hive/warehouse/teacher';


2.2 查看表

2.2.1 展示表

SHOW TABLES [IN database_name] LIKE ['identifier_with_wildcards'];
  • like通配表达式说明:*表示任意个任意字符,|表示或的关系

show tables like ‘stu*’;
在这里插入图片描述


2.1.5 查看表信息

(1)查看基本信息

desc table;

在这里插入图片描述

(2) 查看详细信息

desc formatted table;

在这里插入图片描述


2.3 修改表

在Apache Hive中,要修改表的属性或结构,你可以使用ALTER TABLE语句。以下是一些常见的用法:

1.修改表名称:

ALTER TABLE old_table_name RENAME TO new_table_name;
在这里插入图片描述
在这里插入图片描述

2.添加列:
该语句允许用户增加新的列,新增列的位置位于末尾。
ALTER TABLE table_name ADD COLUMNS (col_name data_type [COMMENT col_comment], ...);

在这里插入图片描述
在这里插入图片描述

3.修改列名称和类型(更新列):
该语句允许用户修改指定列的列名、数据类型、注释信息以及在表中的位置
ALTER TABLE table_name CHANGE [COLUMN] col_old_name col_new_name column_type [COMMENT col_comment] [FIRST|AFTER column_name]
在这里插入图片描述

4.替换列:
该语句允许用户用新的列集替换表中原有的全部列。
ALTER TABLE table_name REPLACE COLUMNS (col_name data_type [COMMENT col_comment], ...)
在这里插入图片描述
在这里插入图片描述

2.4 删除表

DROP TABLE [IF EXISTS] table_name;

2.5 清空表

清空表数据内容。

TRUNCATE [TABLE] table_name

在这里插入图片描述
在这里插入图片描述

  • truncate只能清空管理表,不能删除外部表中数据。
  • 因为Hive只能管理内部表的数据文件,外部表无权限处理。
    在这里插入图片描述

整理不易!一键三连呀各位~🤣🤣🤣

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/577846.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软考-系统分析师-精要2

5、可行性分类 经济可行性&#xff1a;成本收益分析&#xff0c;包括建设成本、运行成本和项目建设后可能的经济收益。 技术可行性&#xff1a;技术风险分析&#xff0c;现有的技术能否支持系统目标的实现&#xff0c;现有资源&#xff08;员工&#xff0c;技术积累&#xff0…

GEM TSU Interface Details and IEEE 1588 Support

摘要&#xff1a;Xilinx ZNYQ ULTRASCALE MPSOC的GEM和1588的使用 对于FPGA来说&#xff0c;只需要勾选一些znyq的配置就行了&#xff0c;其余的都是软件的工作&#xff1b; 所有配置都勾选之后&#xff0c;最终会露出来的接口如下&#xff1a; GEM需要勾选的配置如下&#xf…

泰坦尼克号乘客生存情况预测分析2

泰坦尼克号乘客生存情况预测分析1 泰坦尼克号乘客生存情况预测分析2 泰坦尼克号乘客生存情况预测分析3 泰坦尼克号乘客生存情况预测分析总 背景描述 Titanic数据集在数据分析领域是十分经典的数据集&#xff0c;非常适合刚入门的小伙伴进行学习&#xff01; 泰坦尼克号轮船的…

AI新闻速递:揭秘本周科技界最热的AI创新与发展

兄弟朋友们&#xff0c;本周的AI领域又迎来了一系列激动人心的进展。在这个快速变化的时代&#xff0c;不会利用AI的人&#xff0c;就像在数字化高速公路上步行的旅行者&#xff0c;眼看着同行者驾驶着智能汽车绝尘而去&#xff0c;而自己却束手无策。 1. Adobe Firefly 3&…

【基础算法总结】双指针算法二

双指针 1.有效三角形的个数2.和为S的两个数字3.和为S的两个数字4.四数之和 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&#x1f603; 1.有效三角形的个数…

深度学习运算:CUDA 编程简介

一、说明 如今&#xff0c;当我们谈论深度学习时&#xff0c;通常会将其实现与利用 GPU 来提高性能联系起来。GPU&#xff08;图形处理单元&#xff09;最初设计用于加速图像、2D 和 3D 图形的渲染。然而&#xff0c;由于它们能够执行许多并行操作&#xff0c;因此它们的实用性…

Python游戏工具包pygame

当你涉及游戏开发时&#xff0c;Pygame是一个强大的工具包&#xff0c;它提供了一系列功能丰富的模块和工具&#xff0c;让你可以轻松地创建各种类型的游戏。在本文中&#xff0c;我将介绍Pygame的依赖以及其详细属性&#xff0c;同时提供一些示例代码来说明其用法。 目录 一…

Github 2024-04-27 开源项目日报 Top9

根据Github Trendings的统计,今日(2024-04-27统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目6TypeScript项目2C++项目1JavaScript项目1Open-Sora: 构建自己的视频生成模型 创建周期:17 天开发语言:Python协议类型:Apache Lic…

嵌入式Linux学习——Linux常用命令(上)

Linux命令行介绍 Linux Shell 简介 Shell 的意思是“外壳”&#xff0c;在 Linux 中它是一个程序&#xff0c;比如/bin/sh、/bin/bash 等。它负责接收用户的输入&#xff0c;根据用户的输入找到其他程序并运行。比如我们输入“ ls”并回车时&#xff0c; shell 程序找到“ ls…

TinyML之Hello world----基于Arduino Nano 33 BLE Sense Rev2的呼吸灯

早期版本的Hello World 这应该是一个逼格比较高的呼吸灯了&#xff0c;用ML来实现呼吸灯功能&#xff0c;之前已经有大佬发过类似的文章&#xff1a;https://blog.csdn.net/weixin_45116099/article/details/126310816 当前版本的Hello World 这是一个ML的入门例程&#xff…

黑马程序员C++学习总结【进阶篇】

本阶段主要针对C泛型编程和STL技术做详细讲解&#xff0c;探讨C更深层的使用 黑马程序员C学习总结【基础篇】 黑马程序员C学习总结【核心篇】 黑马程序员C学习总结【进阶篇】 黑马程序员C学习总结【进阶篇】 一、模板1.函数模板&#xff08;1&#xff09;函数模板2种使用方式&a…

重学java 25.面向对象 权限修饰符、final关键字、代码块

别让平淡生活&#xff0c;耗尽你所有的向往 —— 24.4.27 重点概述 01.知道final修饰成员之后特点 02.会使用静态代码块以及知道静态代码块的使用场景 03.会使用匿名内部类 一、权限修饰符 1.概述 在Java中提供了四种访问权限&#xff0c;使用不同的访问权限修饰符修饰时&#…

为什么 Facebook 不使用 Git?

在编程的世界里&#xff0c;Git 就像水一样常见&#xff0c;以至于我们认为它是创建和管理代码更改的唯一可行的工具。 前 Facebook 员工&#xff0c;2024 年 首先&#xff0c;我为什么关心&#xff1f; 我致力于构建 Graphite&#xff0c;它从根本上受到 Facebook 内部工具的…

第十五届蓝桥杯省赛第二场C/C++B组E题【遗迹】题解

解题思路 错解 贪心&#xff1a;每次都移动至当前最近的对应方块上。 反例&#xff1a; s s s abxac t t t abac 贪心结果&#xff08;下标&#xff09; 0 → 1 → 0 → 4 0 \rightarrow 1 \rightarrow 0 \rightarrow 4 0→1→0→4&#xff0c;答案为 5 5 5。 正确结…

【MRI重建】基于径向采样的GRASP重建实现(matlab)

关于 对比增强MRI和弥散MRI成像,对于时间分辨率要求都比较高,为了捕获高时间空间分辨率,这里使用GRASP方法,重建radial径向采样的MR数据。使用的稀疏正则项为 temporal total variation。 相关文章 https://onlinelibrary.wiley.com/doi/10.1002/mrm.24980 https://onl…

前端学习笔记3

列表、表格与表单​ 列表就是信息资源的一种展示形式。它可以使信息结构化和条理化,并以列表的样式显示出来,以便浏览者能更快捷地获得相应的信息。 3.0 代码访问地址 https://gitee.com/qiangge95243611/java118/tree/master/web/day03 3.1 列表 ​ 列表大致可以分为3类…

mac资源库的东西可以删除吗?提升Mac运行速度秘籍 Mac实用软件

很多小伙伴在使用mac电脑处理工作的时候&#xff0c;就会很疑惑&#xff0c;电脑的运行速度怎么越来越慢&#xff0c;就想着通过删除mac资源库的东西&#xff0c;那么mac资源库的东西可以删除吗&#xff1f;删除了会不会造成电脑故障呢&#xff1f; 首先&#xff0c;mac资源库…

沉浸式推理乐趣:体验线上剧本杀小程序的魅力

在这个信息爆炸的时代&#xff0c;人们的娱乐方式也在不断地推陈出新。其中&#xff0c;线上剧本杀小程序以其独特的沉浸式推理乐趣&#xff0c;成为了许多人的新宠。它不仅让我们在闲暇之余享受到了推理的快乐&#xff0c;更让我们在虚拟的世界里感受到了人性的复杂与多彩。 线…

【hackmyvm】 Quick2靶机

渗透流程 渗透开始1.IP地址 获取2.端口扫描3.任意文件读取4.扫描目录5.总结信息6.漏洞扫描7.php_filter_chain_generator.py使用8.提权 渗透开始 1.IP地址 获取 ┌─[✗]─[userparrot]─[~] └──╼ $fping -ag 192.168.9.0/24 2>/dev/null 192.168.9.124 本机 192.1…

base64格式图片直接显示

<img :src"data:image/png;base64,url"/>