Hive 数据类型 + Hive sql
Hive 数据类型 + Hive sql
基本类型
- 整型
- int tinyint (byte) smallint(short) bigint(long)
- 浮点型
- float double
- 布尔
- boolean
- 字符
- string char(定长) varchar(变长)
- 时间类型
- timestamp date
引用/复合类型
- 优点类似于容器(Container),便于我们操作数据
- 复合类型可以和复合类型相互嵌套
- Array
- 存放相同类型的数据
- 数据按照索引进行查找,索引默认从0开始
- user[0]
- Map
- 一组键值对,通过key可以访问到value
- key不能相同,相同的key会相互覆盖
- map['first']
- Struct(就是C语言中的结构体, golang中也有)
- 定义对象的属性,结构体的属性都是固定的
- 通过属性获取值
- user.uname
类型转换
- 自动
- 任何整数类型都可以隐式地转换为一个范围更广的类型
- 所有整数类型、FLOAT和STRING类型都可以隐式地转换成DOUBLE。
- TINYINT、SMALLINT、INT都可以转换为FLOAT。
- BOOLEAN类型不可以转换为任何其它的类型。
- 强制
- CAST('1' AS INT)
- 在设计表的时候,尽量将数据类型设置为合适的类型
- 防止以后操作中没必要的麻烦
DDL操作--数据库
库,表,字段等命名要注意命名规范
执行数据库组件的定义(创建,修改,删除)功能
执行任何的hivesql语句在语句末尾都要加上分号(;)
数据库
-
创建数据库
-
每创建一张表都会在HDFS文件系统中创建一个目录
- create database ronnie;
- create database if not exists ronnie;
-
创建数据库并制定存放的位置
-
create database ronnie location '/ronnie/ronnie_test;
-
-
-
删除数据库
- drop database 库名;
- drop database if exists 库名;
- 如果当前库不为空,级联删除
- drop database if exists 库名 cascade;
-
修改数据库信息
- 数据库的其他元数据信息都是不可更改的
- 数据库名
- 数据库所在的目录位置。
- alter database ronnie set dbproperties('createtime'='20170830');[设置库属性]
- 数据库的其他元数据信息都是不可更改的
-
显示数据库
-
show databases;
hive> show databases; OK default ronnie Time taken: 0.228 seconds, Fetched: 2 row(s) hive>
show databases like 'r*'; [模糊匹配]
hive> show databases like'r*'; OK ronnie Time taken: 0.01 seconds, Fetched: 1 row(s) hive>
-
-
查看信息
- desc database ronnie;
-
使用数据库
- use ronnie;
DDL操作-表
- 表的创建方式:表示对数据的映射,所以表示根据数据来设计的
创建表
创建表写语句的时候,千万不要出现tab键,会出现乱码
创建数据文件,上传到Linux
创建userinfo表,会在数据库的文件夹中创建一个表名文件夹
-
将数据载入到表中
ronnieInfo.txt
1,luna,00000
2,slark,11111
3,sven,22222
4,anit_mage,33333
create table ronnieInfo(
id int,
uname string,
password string
)
row format delimited fields terminated by ',' lines terminated by '\n';
load data local inpath '/root/ronnieInfo.txt' overwrite into table ronnieInfo;
select * from ronnieInfo
select id from ronnieInfo where id = 2;
命令行显示:
hive> select * from ronnieInfo;
OK
1 luna 00000
2 slark 11111
3 sven 22222
4 anit_mage 33333
Time taken: 0.322 seconds, Fetched: 4 row(s)
hive> select id from ronnieInfo where id = 2;
OK
2
Time taken: 0.151 seconds, Fetched: 1 row(s)
重要指令集:
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] 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]
- CREATE
- 关键字,创建表
- [EXTERNAL]
- 表的类型,内部表还是外部表
- TABLE
- 创建的类型
- [IF NOT EXISTS]
- 判断这个表是否存在
- table_name
- 表名,要遵循命名规则
- (col_name data_type [COMMENT col_comment], ...)
- 定义一个列 (列名1 数据类型1,列名2 数据类型1)
- 列与列之间用逗号隔开,最后一个列不需要加,
- [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]
- 数据文件的地址
修改表
修改表的时候文件夹也会修改名字
ALTER TABLE ronnieInfo RENAME TO ronnie_info;
更新列
ALTER TABLE table_name CHANGE [COLUMN] col_old_name col_new_name column_type [COMMENT col_comment][FIRST|AFTER column_name];
增加替换列
ALTER TABLE table_name ADD|REPLACE COLUMNS (col_name data_type [COMMENT col_comment], ...);
查看表结构
desc table_name;
删除表
DROP TABLE [IF EXISTS] table_name;