hive的常用的交互式命令
- ‘-e’不进入hive的交互式窗口执行sql语句
bin/hive -e "select id from student"
- ’-f’执行脚本里的sql语句,先创建一个文件来存储sql语句,执行文件里的sql语句并且将执行的结果放到其他文件里
bin/hive -f /hive.sql > /result.txt
- 在hive cil命令窗口查看hdfs文件系统
dfs -ls /;
- 在hive cil命令窗口如何查看本地文件系统
! ls /data;
- 查看在hive输入的所有的历史命令
//进入当前用户的根目录/root或者/home/用户
//查看hivehistory文件
cat .hivehistory
hive类型转换
- Hive的原子数据类型的是可以进行隐式转换的,类似于Java。TINYNT会自动转换成INT类型
- 任何整式类型都可以转换为一个更广的类型,入TINYINT可以转换成INT类型,INT类型可以转换成BIGINT 类型
- TINYINT、SMALLINT、INT都可以转换成FlOAT类型
- 布尔类型不可以转换任何类型
- cast强制类型转换
hive数据库与表的创建
创建数据库
- 创建数据库
create database hive;
- 创建数据库并且指定在hdfs中地址
create database hive location '/hive.db'
- 数据库的强制删除
drop database hive cascade
创建表
建表语法
CREATE [EXTERNAL] TABLE [IF NOT EXIST] 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],...)] INFO num_buckets BUCKETS]
[ROW FORMAT row_format]
[STORED AS file_format]
[LOCATION hdfs_path]
字段解释
- CREATE TABLE创建一个指定名字的表,如果名字相同抛出异常,用户可以使用IF NOT EXIST来忽略异常
- EXTERNAL关键字可以创建一个外部表,在建表的同时指定一个实际数据的路径(LOCATION),hive在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据
- COMMENT是为表和列添加注释
- PARTITIONED BY是分区表
- CLUSTERED BY 是建分桶
- SORTED BY不常用
- STORED AS 指定存储文件类型
- LOCATION指定表在HDFS上的存储位置
- LIKE允许复制现有的表结构但是不复制数据
建表时的分隔符的设置
//字段分隔符
fields terminated by '\t'
//array 类型成员分隔符
collection items terminated by ','
//map的Key和Value之间的分隔符
map keys terminated by ':'
//行分隔符,必须放在最后
lines terminated by '\n'
表读取数据
外部表读取本地数据
load data local inpath '/export/servers/hivedatas/student.csv' into table test;
读取数据并且覆盖
load data local inpath '/export/servers/hivedatas/student.csv' overwrite into table test;
读取hdfs上的数据
load data inpath '/hive/data/test' into table test;