1.hive的基本操作
hive的启动
bin/hive --启动为一个单机交互式程序
启动服务
bin/hiveserver2
然后服务
bin/beeline -u jdbc:hive2://localhost:10000 -n root
sql基本语法
建库:create database mydb; --会在/user/hive/warehouse/下建一个库文件夹 mydb.db
选择库:use mydb;
建表:
--hive中的表有两种类型:Managed Table内部表 | external Table 外部表
--内部表和外部表的区别
1.1、内部表不需要指定数据存放目录,它默认在/user/hive/warehouse/db目录/表名目录
1.2、而外部表的数据存放目录是可以任意指定的
2.1、内部表被删除时,表定义和表数据全部都会被删除
2.2、外部表被删除时,表定义会被删除,但是表数据依然保留(hdfs文件)
--内部表建表示例:
create table t1(id int,name string,salary float); --会在/user/hive/warehouse/mydb.db下建一个文件夹t1
--建表示例:需求:建一个表,记录 学号,姓名,手机号,期末考试成绩,住址,性别
create table stu(stuno int,name string,phone string,score float,address string,gender string); --默认认为文件中的字段分隔符为\001
create table stu(stuno int,name string,phone string score float,address string,gender string) row format delimited fields terminated by ',' --将文件中的','作为字段分隔符
--外部表建表示例:
create external table teacher(id int,name string) row format delimited fields terminated by ','
location '/abc/ddd/';
导入数据(文件中的分隔符和字段顺序,必须与表定义一致,否则会出现NULL等你不想要的结果):
方式1:自己将数据文件,用hdfs dfs -put命令put到指定目录
方式2:用hive的语句来导入
--文件可以在hdfs上(本质将文件移动到指定目录)
load data inpath 'hdfs路径' into table t1;
--文件也可以在hive运行所在机器的本地(复制到hdfs路径下)
load data local inpath '/root/wzk/' into table t1;
![hive表元数据](https://img-blog.csdnimg.cn/0928714c2bf6429faa57be10c7533a32.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6aqR552A546L5YWr546v5ri45LiW55WM,size_20,color_FFFFFF,t_70,g_se,x_16
![hive字段元数据](https://img-blog.csdnimg.cn/ac76eaf7b3984ce1bae5bb946dbb7256.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6aqR552A546L5YWr546v5ri45LiW55WM,size_20,color_FFFFFF,t_70,g_se,x_16
删除表:
drop table sut;
删除数据库:
drop database mydb; --删除没有表(空)的库
drop database mydb cascade; --删除非空的库
|