hive基本操作
- 进入hive的两种方式:
1. 命令行输入:hive 即可
thrit做的连接(Thrift是一种接口描述语言和二进制通讯协议,它被用来定义和创建跨语言的服务。它被当作一个远程过程调用(RPC)框架来使用,是由Facebook为“大规模跨语言服务开发”而开发的。)
2. beeline JDBC做的连接
01 启动hiveserver2 服务 这个服务要后台启动
02 输入beeline
03 连接 !connect jdbc://hive2://myx01:10000
04 输入用户名和密码 mysql的用户名和密码
05 退出 !q
DDL:对表的操作 比如 字段,结构,类型
创建数据库:
- create database databaseName;
- create database if not exists databaseName; 为了避免报错,所以加上判断
数据库相对于hdfs其实就是文件夹
表相对于hdfs也是文件夹
表中的数据就是hdfs上的文件 - 展示数据库 show databases;
- 使用数据库 use databasename;
- 删除数据库 drop database databasename;
- 创建数据库并指定在hdfs上的路径 create database test03 location '/aaa/test03.db';
- 查看数据库的详细信息 desc database extended test03;
- 过滤显示查询的数据库 show databases like ‘d*' ;
hive创建表:
hive创建的表默认分隔符是 \001
hive表分为1.内部表也叫管理表 2.外部表
区别:在删除表时会体现出来,内部表在删除hive表时,真实数据和元数据都会被删除,外部表被删除时,真实数据会被保留,元数据会被删除。
外部表一般会在加载数据时使用,内部表一般用来存放分析的结果。
- 创建内部表 create table stu01(name string,age int, gender string) row format delimited fields terminated by '\t' stored as textfile;
- 创建外部表 create external table stu01(name string,age int, gender string) row format delimited fields terminated by '\t' stored as textfile;
创建的表默认格式就是 testfile stored as textfile - 删除表 drop table tablename;
- 分区表格式 create table tablename(字段 字段类型...) partitioned by (分区的字段名称 类型) row format delimited fields terminated by '\t' ;
分区在hdfs上也是文件夹 - 查看表分区 show partitions tablename ;
- 添加分区 alter table tablename add partition(分区字段=’字段名称‘);
- 添加多个分区 alter table tablename add partition(分区字段=’字段名称01‘) partition(分区字段=’字段名称02‘) partition(分区字段=’字段名称03‘)...;
注意中间是空格 - 删除一个分区 alter table tablename drop partition(分区字段=’字段名称‘);
- 删除多个分区 alter table tablename drop partition(分区字段=’字段名称01‘),partition(分区字段=’字段名称02‘),partition(分区字段=’字段名称03‘),...;
注意中间用逗号隔开 - 查看表的详情信息 desc formatted tablename;
- 重命名表 alter table tablename rename to newTablename;
- 修改列名和列类型 alter table tablename change 要修改的列名 新列名 新的类型;
- 增加列 alter table tablename add columns (增加的列名 列类型);
- 删除列 alter table tablename replace columns (你要保留的字段);
DML操作:对表中数据的操作 插入数据,重写数据 - 加载数据 load data [local] inpath 'path' [overwrite] into table tablename;
[local] path 本地路径 指的是虚拟机路径
path 指的是hdfs路径
[overwrite] 是否重写
hive 加载数据到表中会很快,因为hive并不会读取文件中的内容 - 清除表数据: truncate table tablename;
- Insert导出:insert overwrite [local] directory 'path' [row format delimited fields terminated by "\t分隔符"]指定字段分割符 select * from tablename [where]
在使用insert语句时,yarn的服务必须是正常的。 - 指定数据库和表名查看内容 select * from 数据库名.表名 limit 10 分页查看;
- 查看表的建表语句 show create table tablename;
- 建表并插入语句 create table tablename as select *,字段 from tablename02 [where 条件];
- 创建和某张表结构相同的表: create table newTablename like tablename;
- 在hive中操作 hdfs
dfs -ls /user/hive/warehouse/par_movies/scorerange=0-3;
dfs -cat /user/hive/warehouse/par_movies/scorerange=0-3/part-00000;
dfs -put /a.txt /user/hive/warehouse/par_movies/scorerange=0-3;