Hive之DDL

news2025/1/31 8:05:16

 

目录

对数据库操作:

创建数据库:

查看数据库信息:

1.查看基本信息:

2.查看详尽信息:

删除数据库:

1.简单语法:

2.复杂语法:

对表操作:

创建表:

1.普通建表:

完整语法:

 关键字解释:

(3)数据类型:

2.Create Table As Select(CTAS)建表:

3.Create Table Like语法

建表案例:

1.创建内部表:

2.创建外部表:

3.SERDE和复杂数据类型的使用:

4.create table as select:

5.create table like

查看表:

查看表的基本信息:

修改表:

(1)重命名表:

案例:

(2)修改列信息:

        (1)添加列:

        (2)更新列:

        (3)替换列

删除表:

清空表:


对数据库操作:

创建数据库:

create database db_hive1;

在创建的时候没有指定路径(hdfs的存储路径)会使用默认路径

使用关键字   location 可指定路径但是该目录是在/user下新建一个当前连接用户名的目录,在该目录下边创建所给出的相应目录

create database db_hive3 location 'db_2/sss';

查看数据库信息:

1.查看基本信息:

DESCRIBE DATABASE db_hive1;

2.查看详尽信息:

DESCRIBE DATABASE EXTENDED db_hive1;

相比之下只是多出一些信息(parameters)

这列信息所展示的是我们在创建数据库的时候附加的信息

修改数据库:
用户可以使用alter database命令修改数据库某些信息,其中能够修改的信息包括dbproperties、location、owner user。需要注意的是:修改数据库location,不会改变当前已有表的路径信息,而只是改变后续创建的新表的默认的父目录。

--修改dbproperties
ALTER DATABASE database_name SET DBPROPERTIES (property_name=property_value, ...);

删除数据库:

1.简单语法:

drop database 数据库名

2.复杂语法:

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

IF EXISTS:存在才删除  不存在不报错

RESTRICT:严格模式,若数据库不为空,则会删除失败。(需要手动删除表和数据)(默认)

CASCADE:级联模式,若数据库不为空,则会将库中的表一并删除。

对表操作:

创建表:

1.普通建表:

create table ind1(name string,age int);

完整语法:

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, ...)]

 关键字解释:

(1)TEMPORARY

临时表,该表只在当前会话可见,会话结束,表会被删除。

(2)EXTERNAL(重点)

加上该关键字就是创建外部表的意思(内部表也叫管理表:管理表意味着Hive会完全接管该表,包括元数据和HDFS中的数据,外部表:而外部表则意味着Hive只接管元数据,而不完全接管HDFS中的数据。)

(3)数据类型:

        基础数据类型:

Hive

说明

定义

tinyint

1byte有符号整数

smallint

2byte有符号整数

int

4byte有符号整数

bigint

8byte有符号整数

boolean

布尔类型,true或者false

float

单精度浮点数

double

双精度浮点数

decimal

十进制精准数字类型

decimal(16,2)

varchar

字符序列,需指定最大长度,最大长度的范围是[1,65535]

varchar(32)

string

字符串,无需指定最大长度

timestamp

时间类型

binary

二进制数据

        复杂数据类型:

类型

说明

定义

取值

array

数组是一组相同类型的值的集合

array<string>

arr[0]

map

map是一组相同类型的键-值对集合 

map<string, int>

map['key']

struct

结构体由多个属性组成,每个属性都有自己的属性名和数据类型

struct<id:int, name:string>

struct.id

类型转换

 Hive的基本数据类型可以做类型转换,转换的方式包括隐式转换以及显示转换。

隐式转换:

Hive官方说明:隐式转换官方文档https://cwiki.apache.org/confluence/display/hive/languagemanual+types

 显式转换:

可以借助cast函数完成显示的类型转换

select cast('12345'as int);

 主要就是cast函数的调用

(4)ROW FORMAT(序列化&反序列化)

   DELIMITED 关键字表示对文件中的每个字段按照特定分割符进行分割,其会使用默认的SERDE对每行数据进行序列化和反序列化。

  SERDE关键字可用于指定其他内置的SERDE或者用户自定义的SERDE。例如JSON SERDE,可用于处理JSON字符串。

2.Create Table As Select(CTAS)建表:

        该语法允许用户利用select查询语句返回的结果,直接建表,表的结构和查询语句的结构保持一致,且保证包含select查询语句放回的内容

create table inc as select *from stu;

结果新创建的inc表中数据与stu表一致

3.Create Table Like语法

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

create table incc LIKE inc;

建表案例:

1.创建内部表:

create table if not exists student(id int comment '学号'
                                  ,name string)
                                  row format delimited fields terminated by '\t'
location '/user/hive/warehouse/student';

上述创建的内部表是默认序列化和反序列化,并且设置列分隔符和指定HDFS中文件路径

如果删除表,则HDFS路径也会跟着删除

可以看到没有了student表的信息

2.创建外部表:

create external table student(id int comment 'id'
                             ,name string)
                             row format delimited fields terminated by '\t'
location '/user/hive/warehouse/student';

 参数与上一案例相同,重点演示删除操作

(外部表只管理元数据,不管理HDFS中的数据)

上传数据:

执行删除命令后:

可以看到我们可视化界面中已经没有了student表

但是我们的HDFS中还是存在我们的数据

 上述就应证了我们外部表只管理元数据

3.SERDE和复杂数据类型的使用:

下边给出JSON格式化后的文件:

{
    "name": "dasongsong",
    "friends": [
        "bingbing",
        "lili"
    ],
    "students": {
        "xiaohaihai": 18,
        "xiaoyangyang": 16
    },
    "address": {
        "street": "hui long guan",
        "city": "beijing",
        "postal_code": 10010
    }
}

我们要把JSON文件对应创建HIVE表,则需要把JSON文件中的一级字段与Hive表的字段保持一致

再根据后边的值来设计Hive表字段的类型

  设计name的类型为: string

      fridends的类型为: array数组

      students的类型为:map键值对的形式

      address的类型为: struct(因为值的类型不一致所以设置为struct)

建表语句如下:

create table teacher
(
    name     string,
    friends  array<string>,
    students 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';

上传JSON文件(上传数据的时候要保证一条JSON数据为一行(不要格式化之后的))

让后调用hadoop fs命令上传文件(上传到hive表所在的目录下)

4.create table as select:

create table teacher1 as select * from teacher;

上述命令会按照select查询到的数据类型进行建表,让后把查询到的数据进行填充

5.create table like

create table teacher2 like teacher;

上述代码只会复刻表的结构不会复制数据

查看表:

SHOW TABLES [IN database_name] LIKE ['identifier_with_wildcards'];

查看表的基本信息:

DESCRIBE [EXTENDED | FORMATTED] [db_name.]table_name

EXTENDED:展示详细信息

FORMATTED:对详细信息进行格式化的展示

修改表:

修改信息只会修改元数据信息,HDFS文件是不会被修改的,所以文件需要手动处理

(1)重命名表:

ALTER TABLE table_name RENAME TO new_table_name

案例:

 alter table stu rename to stu1;

(2)修改列信息:

        (1)添加列:

增加列默认情况下会增加到列的末尾

alter table stu1 add columns (age int);

        (2)更新列:

该语句允许用户修改指定列的列名、数据类型、注释信息以及在表中的位置。

在修改表的时候会检验修改前后类型是否兼容(对比标准按照数据类型的转换进行对比)

我们也可以设置不进行检验(默认开启校验为true)

set hive.metastore.disallow.incompatible.col.type.changes=false;
alter table stu1 change age   age double comment 'age';

        (3)替换列

该语句允许用户用新的列集替换表中原有的全部列。

替换列需要用到关键字replace

alter table stu1 replace columns (id int,name string);

删除表:

如果所删除的表是外部表只删除了元数据

drop table inc;

清空表:

清空表只对管理表(内部表),不能清空外部表,执行命令后HDFS中存储的数据就会全部清空 

truncate table stu1;

 hive的DDL操作至此结束!!!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JVM-内存结构

✅作者简介&#xff1a;热爱Java后端开发的一名学习者&#xff0c;大家可以跟我一起讨论各种问题喔。 &#x1f34e;个人主页&#xff1a;Hhzzy99 &#x1f34a;个人信条&#xff1a;坚持就是胜利&#xff01; &#x1f49e;当前专栏&#xff1a;JVM &#x1f96d;本文内容&…

《程序员的底层思维》读书笔记

人是能够习惯于任何环境的生物&#xff0c;之前你认为自己难以克服的困难&#xff0c;慢慢都会适应了。 维克多弗兰克《活出生命的意义》 文章目录 人是能够习惯于任何环境的生物&#xff0c;之前你认为自己难以克服的困难&#xff0c;慢慢都会适应了。 基础思维能力逻辑思维批…

每日学术速递5.12

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.ImageBind: Holistic AI learning across six modalities 标题&#xff1a;ImageBind&#xff1a;跨六种模式的整体人工智能学习 作者&#xff1a;Mengyuan Yan Jessica Lin Mont…

支付系统设计三:渠道网关设计04-渠道数据补全

文章目录 前言一、交易信息准备1. MessageDescription内容2. 交易信息填充3. 开户机构信息填充4. 省市区域信息填充5. 银行信息填充 二、路由处理三、支付渠道数据补全1.服务端支付渠道获取2. 支付渠道通用数据补全2.1 支付渠道账户信息补全2.1 商户信息补全结束 3. 支付渠道差…

具有噪声标签的鲁棒医学图像分割的点类仿射损失校正

文章目录 Joint Class-Affinity Loss Correction for Robust Medical Image Segmentation with Noisy Labels摘要本文方法Differentiated Affinity Reasoning (DAR)Class-Affinity Loss Correction (CALC)Class-Level Loss CorrectionAffinity-Level Loss CorrectionClass-Affi…

AcWing算法提高课-1.3.4数字组合

宣传一下算法提高课整理 <— CSDN个人主页&#xff1a;更好的阅读体验 <— 本题链接&#xff08;AcWing&#xff09; 点这里 题目描述 给定 N N N 个正整数 A 1 , A 2 , … , A N A_1,A_2,…,A_N A1​,A2​,…,AN​&#xff0c;从中选出若干个数&#xff0c;使它们…

轻松搭建冒险岛服务器-冒险岛私服搭建详细教程

想要拥有一个属于自己的冒险岛世界吗&#xff1f;想要一步步学习如何架设冒险岛服务器吗&#xff1f;本文将从如何选择服务器、安装系统、配置环境、搭建数据库、部署网站、上传文件、启动服务等8个方面&#xff0c;一步步为大家详细讲解冒险岛架设教程。让你轻松打造属于自己的…

sql 性能优化基于explain调优

文章目录 Explain分析&#xff1f;问题描述解决方案 Explain分析&#xff1f; 关于Explain具体可以干什么&#xff0c;有哪些优缺点&#xff0c;本博主的文章有写到&#xff0c;这是链接地址: 点击这里查看. 下面来说下Explain在项目实战中&#xff0c;如何去进行优化。 问题…

7年老人,30岁的测试说辞就辞,“人员优化”4个字,泰裤辣...

前几天&#xff0c;一个认识了好几年在大厂做测试的程序员朋友&#xff0c;年近30了&#xff0c;在公司做了7年了&#xff0c;一直兢兢业业&#xff0c;最后还是却被大厂以“人员优化”的名义无情被辞&#xff0c;据他说&#xff0c;有一个月散伙饭都吃了好几顿…… 在很多企业…

【ChatGPT】国内免费使用ChatGPT镜像

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员&#xff0c;2024届电子信息研究生 目录 什么是ChatGPT镜像&#xff1f; 亲测&#xff1a; 一、二狗问答(AI对话) 二、AiDuTu 三、WOChat 四、ChatGPT(个人感觉最好用) 我们可以利用ChatGPT干什么&#xff1f; 一、三分…

薪人薪事 java开发实习一面

目录 1.常用数据结构&#xff0c;区别及使用场景2.数组和链表在内存中数据的分布情况3.HashMap底层数据结构4.put操作5.JVM内存区域6.各个区域存放什么东西7.创建一个对象&#xff0c;内存怎么分配的8.堆中内存怎么划分&#xff0c;gc怎么回收9.IOC 原理10.Bean存放在哪里11.AO…

支付系统设计三:渠道网关设计05-交易持久化

文章目录 前言一、领域模型持久化服务工厂二、聚合创建工厂1. 模型创建1.1 获取域模型Class1.2 新建模型1.3 数据填充 2. 模型持久化2.1 获取域模型对应的仓储2.2 调用域模型仓储进行持久化 总结 前言 本篇将解析交易信息入库&#xff0c;即对上送的参数&#xff0c;在进行校验…

关于ASA广告归因接入方法

投放苹果ASA广告&#xff0c;提高 app 曝光率、下载量的增长&#xff0c;那么我们该如何从后台看到投放广告的效果呢&#xff1f; 我们可以借助Apple Ads归因API。那什么是归因&#xff1f;什么又是API呢&#xff1f; 归因&#xff1a;可以给用户打标签&#xff0c;然后看他在…

[GUET-CTF2019]encrypt 题解

本题是输入了一个字符串&#xff0c;进行了rc4加密&#xff0c;和魔改的base64加密 RC4算法初始化函数 RC4加密过程 魔改的base64加密 最后加密的字符串是byte_602080 我们可以将byte_602080提取出来&#xff0c;下面是提取数据的IDC脚本&#xff0c;得到了密文 #include<…

赫夫曼树和赫夫曼编码详解

目录 何为赫夫曼树&#xff1f; 赫夫曼树算法 赫夫曼编码 编程实现赫夫曼树 编程实现赫夫曼编码 编程实现WPL 总代码及分析 何为赫夫曼树&#xff1f; 树的路径长度&#xff1a;从树根到每一结点的路径长度之和 结点的带权路径长度&#xff1a;从树根到该结点的路径长度…

2023网络安全十大顶级工具

从事网络安全工作&#xff0c;手上自然离不开一些重要的网络安全工具。今天&#xff0c;分享10大网络安全工具。 一、Kali Linux Kali 是一个基于 Debian 的 Linux 发行版。它的目标就是为了简单&#xff1a;在一个实用的工具包里尽可能多的包含渗透和审计工具。Kali 实现了这…

【AI面试】CNN 和 transformer 的问题汇总

​ CNN卷积神经网络和transformer相关的知识&#xff0c;是AI的一个基础的&#xff0c;也是前言的知识点。一般面试官会从以下这些问题入手&#xff1a; 卷积神经网络&#xff0c;有什么特点&#xff1f;1*1卷积核有什么作用&#xff1f;计算经过卷积的输出尺寸大小空洞卷积你…

机器学习之朴素贝叶斯三、拉普拉斯平滑技术、优化改进情感分析

文章目录 一、前文问题1. 先看下改进前我们的代码计算部分2. 问题分析&#xff1a; 二、针对问题进行解决1. 什么是拉普拉斯平滑技术2. 拉普拉斯优化-下溢上溢问题3. 改进地方分析&#xff1a;4.改进优化1.优化一&#xff0c;对条件概率计算进行优化2.优化二&#xff0c;对后延…

从小白到黑客高手:一份全面详细的学习路线指南

前言 黑客从入门到精通需要经过深入的学习和实践&#xff0c;这是一个需要长时间投入和大量精力的过程。在这份学习路线中&#xff0c;我将为你介绍黑客学习的基本知识和技能&#xff0c;帮助你逐步掌握黑客技能。 黑客 一、入门阶段 1.了解计算机基础知识 学习计算机基础知…

红黑树(小白教学)

分享一个动画展示的网址&#xff1a;Red/Black Tree Visualization (lerogo.com) 将红黑树之前&#xff0c;我们先来了解一下什么叫做2-3树&#xff01;&#xff01;&#xff01; 在我们以前学习的过程中&#xff08;二分搜索树、完全二叉树等&#xff09;结点都是存放了一个元…