load 加载
语法:
> load data [local] inpath '数据的 path' [overwrite] into table
student [partition (partcol1=val1,…)];
接下来来个例子:
load data local inpath "/opt/module/hive/student.txt" into table table_name;
这是通过本地路径上传文件 同时本地文件上传会更改元数据中的filenum 但是不会更改rownum 因为load不会对文件进行读取 所以不知道文件中具体由多少行数据 所以通过select count(*) from table_name 的sql语句会走mr程序
load data inpath "/student.txt" into table table_name;
而去掉local则说明是从hdfs中拿取数据的 只是更改元数据中的映射地址 其他通通不改 因此传输速度是快于本地上传的
insert
insert into||overwrite table_name values(column_need);
不过实际开发中这种用法比较少通常是从别的表中拿取数据写入新表中的 且insert会走mr 也会改动matastore中的filenum和rownum
来个例子
insert into||overwrite table_name
select id,class from need_table_name;
as select
tip:属于建表语句
create table table_name as select column_name from
need_table_name;
创建完数据库后 会导入查询所找的数据库 同时也会走mr程序
location
顾名思义 自定数据库在hdfs中的路径
create table table_name location "/xxxx";
数据导出
insert overwrite local directory
"input_path" [row format delimted fields terminated by "\t" select * from table_name;
导出数据到本地 若去除local关键字 则是导入数据到hdfs中
由于会走mr 所以可以传入hdfs时可以不用提前创建目标文件夹
export import
(了解)
export table table_name to "hdfs_path";
import table table_name from "hdfs_path";
tip:需要先进行export导出到hdfs才可以通过import导入到表中 且导入的表需要为空 或者不存在
主要用于两个hadoop集群平台之间相互传输
truncat
truncat table table_name
用于删除hdfs中的表 注意:Truncate 只能删除管理表,不能删除外部表中数据