hive加载数据方式
-
建表时加载数据
(1)location方式,需要提前将本地文件put到hdfs上,而且必须是外部表,否则容易把源文件给删了;
create table aa(列名 数据类型) row format delimited fields terminated by ‘;’ location ‘hdfds文件路径’;
(2)导入已有表的数据(不用写字段了)
create table bb as selecte * from aa; -
建空表后,加载数据
(1)load添加数据(如果原表已有数据,则另外建立一个文件,而不是把数据追加到源文件中;而且
自动更新mysql里的元数据),如果不加local,代表从hdfs上加载数据,相当于剪切操作,源文件消失
load data [local] inpath ‘路径’ [overwrite] into table student [ partition (column=xxx)…];
(2)insert添加数据,也会单独生成一个文件,并且更新mysql里的元数据
insert into cc values (列名1,列名2…);
insert into cc values selecte * from bb;
(3)将文件put到hdfs的表的文件夹下,不更新元数据,需要修复表来重新读取hdfs上的数据生成新的元数据;
msck repair table table_name;
数据导入、导出
应用场景:两个hadoop平台集群之间的Hive迁移
导出:
(1)export(包括数据文件和元数据信息文件)
export table table_name to ‘hdfspath’;
(2)hive shell命令
bin/hive -e/-f `select * from table_name;` > /opt/software/stu.txt;
<!--也可以用两个大于号,表示追加-->
(3)insert语句
insert overwrite [local] directory 'path' row format delimited fields terminated by ';' select * from student;
导入(同时有数据文件和元数据信息文件的文件夹才能导入生成表,否则报错;如果表存在且有数据,导入时报错;只有表而没有数据或者没有表都可以导入)
import table table_name from ‘hdfspath’;
(3)