Hive之DDL

这篇具有很好参考价值的文章主要介绍了Hive之DDL。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Hive之DDL 

目录

对数据库操作:

创建数据库:

查看数据库信息:

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

Hive之DDL

 显式转换:

可以借助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路径也会跟着删除

Hive之DDLHive之DDL可以看到没有了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中的数据)

上传数据:
Hive之DDL

执行删除命令后:

Hive之DDL

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

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

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

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数据为一行(不要格式化之后的))

Hive之DDL

让后调用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

 hive的DDL操作至此结束!!!文章来源地址https://www.toymoban.com/news/detail-439036.html

到了这里,关于Hive之DDL的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL-DDL-数据库操作

    开发项目流程 DDL:Data Definition Language,数据定义语言,用来定义数据库对象(数据库、表) 常见操作 查询 查询所有数据库:show databases; 查询当前数据库:select database(); 使用 使用数据库:use 数据库名称; 创建 创建数据库:creste database[if not exists] 数据库名称; 删除

    2024年02月15日
    浏览(45)
  • MySQL数据库---库基本操作 以及 表结构的操作(DDL)

    目录 前言 一.数据库的操作 1.1显示当前数据库 1.2创建数据库 1.3使用数据库  1.4删除数据库  二.数据类型 2.1数值类型 2.2字符串类型 2.3日期类型 三.数据表的操作  3.1 创建表结构。  3.2查看数据库中拥有的数据表  3.3查看指定的表结构   3.4修改表结构   3.5删除表结构  

    2024年02月09日
    浏览(68)
  • 【JaveWeb教程】(18) MySQL数据库开发之 MySQL数据库设计-DDL 如何查询、创建、使用、删除数据库数据表 详细代码示例讲解

    下面我们就正式的进入到SQL语句的学习,在学习之前先给大家介绍一下我们要开发一个项目,整个开发流程是什么样的,以及在流程当中哪些环节会涉及到数据库。 2.1 项目开发流程 需求文档: 在我们开发一个项目或者项目当中的某个模块之前,会先会拿到产品经理给我们提

    2024年01月25日
    浏览(104)
  • 新手快速学会使用DDL对数据库和表的操作

    SQL是一种操作关系型数据库的结构化查询语言。今天这篇文章将详细讲述数据定义语言DDL对数据库和表的相关操作。 首先要学习的是使用DDL来对数据库进行操作,和以往一样,对数据进行操作时,我们主要是对数据进行增删改查,同样,我们使用DDL操作数据库也主要是对数据

    2024年02月07日
    浏览(41)
  • Mysql-------SQL:DDL数据定义语言、DDM数据操作语言、DQL数据库查询语言、DQL数据控制语言

    SQL语言可以分为: DDL(Data Definition Language)语言:数据定义语言,用于 创建或更改数据库中的表、视图、索引等对象 DML(Data Manipulation Language)语言:数据操作语言,用来对 数据库表中的数据进行增删改查操作; DQL(Data Query Language)语言: 数据查询语言,用来查询数据库

    2024年02月13日
    浏览(75)
  • hive查看数据库出现org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

    在启动hive后,使用show databses查看数据库时发现,出现了这个错误 根据搜索查找以及分析得知:可能是hive的数据库MySQL在安装的时候没有初始化,初始化数据库即可 schematool -dbType mysql -initSchema  1.在MySQL中删除元数据 drop database metastore; 2.进入hive中的bin里面 ,输入格式化命令

    2024年02月07日
    浏览(56)
  • hive数据库操作,hive函数,FineBI可视化操作

    1.1、创建数据库 1.2、查看数据库详细信息 数据库本质上就是在HDFS之上的文件夹。 默认数据库的存放路径是HDFS的:/user/hive/warehouse内 1.3、创建数据库并指定hdfs存储位置 使用location,可以指定数据库在HDFS的存储路径。 1.4、删除数据库 删除一个空数据库,如果数据库下

    2024年02月04日
    浏览(45)
  • Dbeaver连接Hive数据库操作指导

    背景:由于工作需要,当前分析研究的数据基于Hadoop的Hive数据库中,且Hadoop服务端无权限进行操作且使用安全模式,在研究了Dbeaver、Squirrel和Hue三种连接Hive的工具,在无法绕开useKey认证的情况下,只能使用DBeaver工具进行远程连接。 【Hadoop环境】:Hive版本:3.1.0 KrbClient版本

    2024年02月09日
    浏览(45)
  • 利用SQL语句创建、修改、删除、查看与使用数据库

    【技术路线图】 1、连接Mysql服务:mysql -u root -p 2、创建数据库:create database teacherdb; 注意:数据库的名字一旦创建后不可更改。 3、查看刚刚创建好的数据库:show databses; 4、删除数据库并查看是否删除掉:drop database teacherdb; 5、输出创建数据库时的SQL语句信息:show create dat

    2023年04月21日
    浏览(88)
  • Django的数据库配置、生成(创建)过程、写入数据、查看数据的学习过程记录

    在文件:\\\"E:Python_projectP_001myshop-testmyshopmyshopsettings.py\\\"中写入以下数据库的配置信息: 上面的代码比较好理解,就是对于语句: django.db.backends.mysql 作一些说明: 在Django中, \\\'django.db.backends.mysql\\\' 是一个数据库后端引擎的路径,用于指定使用MySQL作为数据库的后端。数据库后

    2024年02月12日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包