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;
的库
drop database mydb cascade; --删除非空的库
|