首页 > 其他分享 >【大数据入门 | Hive】DDL数据定义语言(表TABLE)

【大数据入门 | Hive】DDL数据定义语言(表TABLE)

时间:2024-09-28 18:51:00浏览次数:12  
标签:... name 定义语言 hive stu Hive DDL table col

1. 创建表

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, ...)]
关键字说明:

1)TEMPORARY

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

2)EXTERNAL(重点)

外部表,与之相对应的是内部表(管理表)。管理表意味着Hive会完全接管该表,包括元数据和HDFS中的数据。而外部表则意味着Hive只接管元数据,而不完全接管HDFS中的数据。

3)data_type(重点)

Hive中的字段类型可分为基本数据类型和复杂数据类型。

基本数据类型如下:

复杂数据类型如下:

注:类型转换

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

方式一:隐式转换

具体规则如下:

a. 任何整数类型都可以隐式地转换为一个范围更广的类型,如tinyint可以转换成int,int可以转换成bigint。

b. 所有整数类型、float和string类型都可以隐式地转换成double。

c. tinyint、smallint、int都可以转换为float。

d. boolean类型不可以转换为任何其它的类型。

方式二:显示转换

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

a.语法

cast(expr as <type>)

4)PARTITIONED BY(重点)

创建分区表

5)CLUSTERED BY ... SORTED BY...INTO ... BUCKETS(重点)

创建分桶表

6)ROW FORMAT(重点)

指定SERDE,SERDE是Serializer and Deserializer的简写。Hive使用SERDE序列化和反序列化每行数据。语法说明如下:

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

ROW FORAMT DELIMITED 
[FIELDS TERMINATED BY char] 
[COLLECTION ITEMS TERMINATED BY char] 
[MAP KEYS TERMINATED BY char] 
[LINES TERMINATED BY char] 
[NULL DEFINED AS char]

注:

  • fields terminated by :列分隔符
  • collection items terminated by : map、struct和array中每个元素之间的分隔符
  • map keys terminated by :map中的key与value的分隔符
  • lines terminated by :行分隔符

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

7)STORED AS(重点)

指定文件格式,常用的文件格式有,textfile(默认值),sequence file,orc file、parquet file等等。

8)LOCATION

指定表所对应的HDFS路径,若不指定路径,其默认值为

${hive.metastore.warehouse.dir}/db_name.db/table_name

9)TBLPROPERTIES

用于配置表的一些KV键值对参数

1.2 Create Table As Select(CTAS)建表

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

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] table_name 
[COMMENT table_comment] 
[ROW FORMAT row_format] 
[STORED AS file_format] 
[LOCATION hdfs_path]
[TBLPROPERTIES (property_name=property_value, ...)]
[AS select_statement]

1.3 create table as select和create table like

(1)create table as select

hive>
create table teacher1 as select * from teacher;

(2)create table like

hive>

create table teacher2 like teacher;

1.4 外部表和内部表

内部表:

Hive中默认创建的表都是的内部表,有时也被称为管理表。对于内部表,Hive会完全管理表的元数据和数据文件。

创建内部表如下:

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

外部表通常可用于处理其他工具上传的数据文件,对于外部表,Hive只负责管理元数据,不负责管理HDFS中的数据文件。

创建外部表如下:

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

上传文件到Hive表指定的路径

[atguigu@hadoop102 datas]$ hadoop fs -put student.txt /user/hive/warehouse/student

删除表,观察数据HDFS中的数据文件是否还在

hive (default)> drop table student;

2. 查看表

2.1 展示所有表

语法:

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

例:

hive> show tables like 'stu*';

2.2 查看表信息

语法:

DESCRIBE [EXTENDED | FORMATTED] [db_name.]table_name

注:EXTENDED:展示详细信息

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

1查看基本信息

hive> desc stu;

2查看更多信息

hive> desc formatted stu;

3. 修改表

3.1 重命名表

语法:

ALTER TABLE table_name RENAME TO new_table_name

例:

hive (default)> alter table stu rename to stu1;

3.2 修改列信息

语法:

1)增加列

该语句允许用户增加新的列,新增列的位置位于末尾。

ALTER TABLE table_name ADD COLUMNS (col_name data_type [COMMENT col_comment], ...)

2)更新列

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

ALTER TABLE table_name CHANGE [COLUMN] col_old_name col_new_name column_type [COMMENT col_comment] [FIRST|AFTER column_name]

3)替换列

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

ALTER TABLE table_name REPLACE COLUMNS (col_name data_type [COMMENT col_comment], ...)

例:

(1)查询表结构

hive (default)> desc stu;

(2)添加列

hive (default)> alter table stu add columns(age int);

(3)查询表结构

hive (default)> desc stu;

(4)更新列

hive (default)> alter table stu change column age ages double;

(6)替换列

hive (default)> alter table stu replace columns(id int, name string);

4. 删除表

语法:

DROP TABLE [IF EXISTS] table_name;

例:

hive (default)> drop table stu;

5. 清空表

语法:

TRUNCATE [TABLE] table_name

注意:truncate只能清空管理表,不能删除外部表中数据。

例:

hive (default)> truncate table student;

标签:...,name,定义语言,hive,stu,Hive,DDL,table,col
From: https://blog.csdn.net/2301_80912559/article/details/142499925

相关文章

  • 【大数据入门 | Hive】hiveSQL常用语句
    1.数据准备①在/opt/module/hive/datas/路径上创建dept.txt文件,并赋值如下内容:部门编号部门名称部门位置id[atguigu@hadoop102datas]$vimdept.txt10 行政部 170020 财务部 180030 教学部 190040 销售部 1700②在/opt/module/hive/datas/路径上创建emp.txt文件,并......
  • mysql 0928 DDL表操作
    `ALTERTABLEempaddnicknameVARCHAR(20)COMMENT'昵称';--添加字段nicknameDESCTABLEemp;--查看表ALTERTABLEempMODIFYnicknamevarchar(10);--修改数据类型ALTERTABLEempchangenicknameusernameVARCHAR(30);--修改字段nickname为usernameALT......
  • 安装paddleocr失败,重新安装
    删除冲突文件rm-f/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/paddle/base/libpaddle.so彻底卸载paddlepaddlepip3uninstallpaddlepaddlepip3uninstallpaddlepaddle-gpu清除pip的缓存pip3cachepurge使用--verbose......
  • 解决 Sqoop 导入 Hive 时时间字段精度丢失问题
    目录一、背景介绍二、问题描述三、问题原因四、解决方案五、结论一、背景介绍介绍Sqoop数据导入过程,尤其是从MySQL导入Hive的场景。说明MySQL和Hive的数据类型差异,特别是DATETIME和TIMESTAMP类型的精度问题。二、问题描述当从MySQL导入Hive时,时间......
  • 大数据毕业设计选题推荐-手机销售数据分析系统-Hive-Hadoop-Spark
    ✨作者主页:IT毕设梦工厂✨个人简介:曾从事计算机专业培训教学,擅长Java、Python、PHP、.NET、Node.js、GO、微信小程序、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。☑文末获取源码☑精彩专栏推荐⬇⬇⬇Java项目Python项目安卓项......
  • DDL 超时,应该如何解决 | OceanBase 用户问题集萃
    问题背景在OceanBase的社区问答里常看到有用户发帖提出DDL超时的问题, 如“执行DDL超时,为何调大超时时间不生效?”。但很多帖子的回答都没有完美解决。因此,这里把相关的解决思路在这里分享给大家。帖子里对这类问题的描述都很简单:就是执行了一条DDL,然后超时了,再然后把ob_......
  • postman关联、fiddler断点
    fiddler可以做什么?抓包、弱网、断点一、关联接口:定义:拿上一个接口的返回参数,做下一个接口入参省份接口:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportProvince城市接口:post http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/get......
  • Cannot open self /usr/local/bin/docker-compose or archive /usr/local/bin/docker-
    安装docker-compose时候。出现错误1、在线拉取太费劲。最后使用的离线安装、、参考内容。.github手动下载文件:https://github.com/docker/compose/releases/tag/1.25.0-rc4选择-86版本的内容将文件上传到/usr/local/bin/目录下,重命名为docker-compose,修改文件权限:chmod+x......
  • 在用sqoop把数据从mysql导入到hive时如何保持字段类型一致
     在把mysql中的数据导入到hive中时发现更改不了时间,这时可能是mysql的字段类型引起的,观察该表的字段类型(1)也可以事先在hive自己手动创建表,这样创作的表数据类型更加精准,特别是一些精度要求非常高的字段(2)可以在sqoop导入的时候,指定数据类型,sqoop就是指定了数据类型,使用了 ......
  • 大数据从业者必知必会的Hive SQL调优技巧
    大数据从业者必知必会的HiveSQL调优技巧摘要:在大数据领域中,HiveSQL被广泛应用于数据仓库的数据查询和分析。然而,由于数据量庞大和复杂的查询需求,HiveSQL查询的性能往往不尽人意。本文针对HiveSQL的性能优化进行深入研究,提出了一系列可行的调优方案,并给出了相应的优化案例和......