Hive库表基本操作

Hive基本操作-库、表

规则语法

大小写规则:

1. hive的数据库名、表名都不区分大小写
2. 建议关键字大写
复制代码

命名规则

1. 名字不能使用数字开头
2. 不能使用关键字
3. 尽量不使用特殊符号
复制代码

库操作语法

创建数据库

创建数据库的本质就是在hive的参数${hive.metastore.warehouse.dir}对应的目录下,创建一个新的目录,此目录的名称为: 库名.db。

注意:在创建库或者表时除了创建目录外,还会在mysql中(元数据库),添加元数据(描述信息)

hive> create database zoo;
hive> create database if not exists zoo;
hive> create database if not exists qfdb comment 'this is a database of qianfeng';
复制代码

hive有一个默认的数据库default,如果不明确的说明要使用哪个库,则使用默认数据库。

查看所有数据库:实际就是从元数据库中获取对应的元数据

语法:show databases;
复制代码

切换数据库

语法:use mydb;
复制代码

查看数据库信息

语法1:desc database databaseName;
语法2:desc database extended databaseName;
语法3:describe database extended databaseName;
复制代码

删除数据库

语法1:drop database databasename;         	  # 这个只能删除空库
语法2:drop database databasename cascade;    	  # 如果不是空库,则可以加cascade强制删除
复制代码

表操作语法

数据类型

Hive的数据类型分为基本数据类型和复杂数据类型,下面是基本数据类型(复杂类型到后期再讲)

其中加粗体是重点要掌握的类型

分类 类型 描述 字面量示例
基本类型 BOOLEAN true/false TRUE
TINYINT 1字节的有符号整数 -128~127 1Y
SMALLINT 2个字节的有符号整数,-32768~32767 1S
INT 4个字节的带符号整数 1
BIGINT 8字节带符号整数 1L
FLOAT 4字节单精度浮点数 1.0
DOUBLE 8字节双精度浮点数 1.0
DEICIMAL 任意精度的带符号小数 1.0
STRING 字符串,可变长度 “a”,’b’
VARCHAR 变长字符串,要设置长度 “a”,’b’
CHAR 固定长度字符串 “a”,’b’
BINARY 字节数组 无法表示
TIMESTAMP 时间戳,纳秒精度 122327493795
DATE 日期 ‘2016-03-29’
复杂类型 ARRAY 有序的的同类型的集合 array(1,2)
MAP key-value,key必须为原始类型,value可以任意类型 map(‘a’,1,’b’,2)
STRUCT 字段集合,类型可以不同 struct(‘1’,1,1.0)
UNION 在有限取值范围内的一个值 create_union(1,’a’,63)

文末扫码领取大数据礼包!

创建表

创建表的本质其实就是在对应的数据库目录下面创建一个子目录,目录名为表名。数据文件就存在这个目录下。

语法1: 
    create table t_user(id int,name string);  

语法2:使用库.表的形式
    create table mydb.t_user(id int,name string);

语法3:指定分隔规则形式
create table if not exists t1(
uname string comment 'this is name',
chinese int,
math int,
english int
)
comment 'this is my table'
row format delimited   
fields terminated by '\t'
lines terminated by '\n'
stored as textfile;

通过查新mysql数据库hive数据库 
DBS表 --> 存储的是 在hive中创建库是存在元数据信息 
TBLS表 ---> 存储的是 在hive中创建表的元数据信息 
MANAGED_TABLE --> 内部表 -->表目录会创建在HDFS文件系统中相对应目录下 (user/hive.warehouse) 
EXTERNAL_TABLE --> 外部表 --> 外部表会根据创建表时指定Location位置来创建表的位置 --> 如果没有指定Location默认会创建和内部表相同位置
复制代码

PS:在我们访问HDFS文件系统时经常会出现,访问权限的问题

WeChatccfa021cae7b026e239728d472715111

我们只需要先关闭HDFS文件系统,然后修改Hadoop安装目录中配制文件core-site.xml

<!-- 当前用户全设置成root -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>

<!-- 不开启权限检查 -->
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>

复制代码

然后分发节点,重新启动HDFS即可

create table if not exists emp(
eno int,
ename string,
job string, 
mgr int,
hiredate int,
salary int,
comm int,
deptno int
)
row format delimited
fields terminated by ','
lines terminated by '\n'
stored as textfile;
复制代码

查看当前表空间中的所有表名

语法:show tables; 
# 查看另外一个数据库中的表
show tables in zoo;
复制代码

查看表结构

desc tableName
desc extended tableName;
describe extended tableName;
复制代码

修改表结构(DML)

- 修改表名
    alter table oldTableName rename to newTableName;
  
- 修改列名:change column	和修改字段类型是同一个语法
    alter table tableName change column oldName newName colType;
    alter table tableName change column colName colName colType;


- 修改列的位置:  注意,2.x版本后,必须是相同类型进行移动位置。【hive进行修改时是修改映射列,不会修改映射数据文件】
    alter table tableName change column colName colName colType after colName1;   
    alter table tableName change column colName colName colType first;
    例如:
    create table t_1( id int, name string );
    向表插入数据的文件 xiaohong 18 列和数据对应不上 
    alter table t_1 change column id id int after name;
  create table t_1( name string id int, );


- 增加字段:add columns
    alter table tableName add columns (sex int,...);


- 删除字段:replace columns	#注意,2.x版本后,注意类型的问题,替换操作,其实涉及到位置的移动问题。
    alter table tableName replace columns(
    id int,
    name int,
    size int,
    pic string
    );
    注意:实际上是保留小括号内的字段。
复制代码

删除表

drop table tableName;

也可以观看大数据相关视频:

千锋大数据Hadoop全新增强版-先导片

猜你喜欢

转载自blog.csdn.net/longz_org_cn/article/details/130965179