IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Hive-day03-DDL语句 -> 正文阅读

[大数据]Hive-day03-DDL语句

1:创建数据库

CREATE DATABASE [IF NOT EXISTS] database_name
[COMMENT database_
[LOCATION hdfs_
[WITH DBPROPERTIES (property_name=property_value, ...)];

? ? ? ? 1.1:创建一个数据库,在hdfs默认存储路径/user/hive/warehouse/*.db

hive (default)> create database db_hive;

? ? ? ? 1.2:避免数据库已存在

hive (default)> create database db_
FAILED: Execution Error, return code 1 from
org.apache.hadoop.hive.ql.exec.DDLTask. Database db_hive already exists
hive (default)> create database if not exists db_hive;

? ? ? ? 1.3:创建一个库,指定hdfs存储路径

hive (default)> create database db_hive2 location '/db_hive2.db';

2:查询数据库

? ? ? ? 2.1:显示数据库

hive> show databases;

? ? ? ? 2.2:过滤显示查询的数据库

hive> show databases like 'db_hive*';
OK
db_hive
db_hive_1

? ? ? ? 2.3:显示数据库信息

hive> desc database db_hive;
OK
db_hive hdfs://hadoop102: 9820 /user/hive/warehouse/db_hive.db
atguiguUSER

? ? ? ? 2.4:显示数据库详细信息,extended

hive> desc database extended db_hive;
OK
db_hive hdfs://hadoop102: 9820 /user/hive/warehouse/db_hive.db
atguiguUSER

? ? ? ? 2.5:切换当前数据库

hive (default)> use db_hive;

3:修改数据库

hive (default)> alter database db_hive
set dbproperties('createtime'='20170830');
hive> desc database extended db_hive;
db_name comment location owner_name owner_type parameters
db_hive hdfs://hadoop102: 9820 /user/hive/warehouse/db_hive.db
atguigu USER {createtime=20170830}

4:删除数据库

? ? ? ? 4.1:删除空数据库

hive>drop database db_hive2;

? ? ? ? 4.2:删除的数据库不存在,使用if exists判断是否存在

hive> drop database db_hive;
FAILED: SemanticException [Error 10072]: Database does not exist: db_hive
hive> drop database if exists db_hive2;

? ? ? ? 4.3:如果数据库不为空,可以采用cascade命令,强制删除

hive> drop database db_hive;
FAILED: Execution Error, return code 1 from
org.apache.hadoop.hive.ql.exec.DDLTask.
InvalidOperationException(message:Database db_hive is not empty. One or
more tables exist.)
hive> drop database db_hive cascade;

5:创建表

? ? ? ? 5.1:建表

CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
[(col_name data_type [COMMENT col_comment],...)]
[COMMENT ta ble_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]
[TBL PROPERTIES (property_name=property_value, ...)]
[AS select_statement]

? ? ? ? 5.2:介绍

1:EXTRNAL 关键字可以让用户创建一个外部表

2:PARTITIONED BY 创建分区表

3:CLUSTERED BY 创建分桶表

4:SORTED BY 对桶中的一个或多个列另外排序

5:ROW FORMAT:定义行的格式

eg:create table test(id int,name string) row format delimited fields terminated by ',';

这样的话,使用insert语句插入数据的时候,在hdfs上面对应的文件内容就是以逗号分隔的,否则会使用默认的分隔符,使用逗号这样的,对于后续通过是哟个hdfs -put 命令,将文件上传到hdfs上,也有好处,需要注意的时,文件的内容需要也是以逗号分隔,不然会生成null

6:FILE_FORMAT:指定文件格式

7:hdfs_path:指定表的位置信息

8:TBL PROPERTIES:额外属性

9:AS :后跟查询语句,根据查询结果创建表

6: 管理表(内部表)和外部表

? ? ? ? 1:当我们删除一个管理表时,Hive也会删除这个表中的数据,管理表不适合和其他工具共享数据。但是删除外部表的时候,只会删除元数据信息,不会删除表中的数据,即mysql里面信息会被删除,但是数据仍然在hdfs上面有保存。

? ? ? ? ?2:如果是外部表,就算是手误删除了,如果能找到建表语句,然后执行之后,通过select语句还是能找到之前表中的数据。安全性更高一些。但是内部表就不会这样,不能找到数据。

? ? ? ? 3:内部表和外部表的转换

? ? ? ? ? ? ? ? 1:查询表的类型

hive (default)> desc formatted student2
Table Type: MANAGED_TABLE

? ? ? ? ? ? ? ? 2:修改内部表student2为外部表

alter table student2 set tblproperties('EXTERNAL'='TRUE');

? ? ? ? ? ? ? ? 3:查询表的类型

hive (default)> desc formatted student2
Table Type: EXTERNAL _TABLE

? ? ? ? ? ? ? ? 4:修改外部表student2为内部表

alter table student2 set tblproperties('EXTERNAL'='FALSE');

? ? ? ? ? ? ? ? 5:查询表的类型

hive (default)> desc formatted student2;
Table Type: MANAGED_TABLE

7:修改表

? ? ? ? 1:重命名表

hive (default)> alter table dept_partition2 rename to dept_partition3;

? ? ? ? 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 ADD|REPLACE COLUMNS (col_name data_type [COMMENT
col_comment], ...)
ADD 是代表新增一字段,字段位置在所有列后,(partition列前)
REPLACE 则是表示替换表中所有字段,REPLACE 是整张表的角度,CHANGE 是单个列的角度

? ? ? ? 4:查询表结构

hive> desc dept;

? ? ? ? 5:添加列

hive (default)> alter table dept add columns(deptdesc string);

? ? ? ? 6:查询表结构

hive> desc dept;

? ? ? ? 7:更新列

hive (default)> alter table dept change column deptdesc desc string

就算是不想改类型,也要把原来的类型加上去

? ? ? ? 8:查询表结构

hive> desc dept;

? ? ? ? 9:替换列

hive (default)> alter table dept replace columns(deptno string, dname
string, loc string);

? ? ? ? 10:查询表结构

hive> desc dept;

? ? ? ? 11:删除表

hive (default)> drop table dept;

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-10 12:28:04  更:2021-11-10 12:28:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:54:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码