创建DB数据库; create database DB;
打开DB数据库; use DB;
1.从本地文件系统中导入数据到Hive表。
首先,在Hive中创建一个cat_group表,包含group_id和group_name两个字段,字符类型为string,以“t”为分隔符,并查看结果。
- create table cat_group(group_id string,group_name string) row format delimited fields terminated by 't' stored as textfile;
- show tables;
注:[row format delimited]关键字,是用来设置创建的表在加载数据的时候,支持的列分隔符。
[stored as textfile]关键字,是用来设置加载数据的数据类型,默认是TEXTFILE,如果文件数据是纯文本,就是使用 [stored as textfile],然后从本地直接拷贝到HDFS上,Hive直接可以识别数据。
然后,将Linux本地/data/hive2目录下的cat_group文件导入到Hive中的cat_group表中。
load data local inpath '/data/hive2/cat_group' into table cat_group;
通过select语句查看cat_group表中是否成功导入数据,由于数据量大,使用limit关键字限制输出10条记录。
select * from cat_group limit 10;
导入成功。
2.将HDFS上的数据导入到Hive中。
首先,另外开启一个操作窗口,在HDFS上创建/myhive2目录。
hadoop fs -mkdir /myhive2
然后,将本地/data/hive2/下的cat_group表上传到HDFS的/myhive2上,并查看是否创建成功。
- hadoop fs -put /data/hive2/cat_group /myhive2
- hadoop fs -ls /myhive2
接着,在Hive中创建名为cat_group1的表,创表语句如下。
- create table cat_group1(group_id string,group_name string)
- row format delimited fields terminated by 't' stored as textfile;
最后,将HDFS下/myhive2中的表cat_group导入到Hive中的cat_group1表中 ,并查看结果。
- load data inpath '/myhive2/cat_group' into table cat_group1;
- select * from cat_group1 limit 10;
导入成功。
提示:HDFS中数据导入到Hive中与本地数据导入到hive中的区别是load data后少了local。
3.从别的表中查询出相应的数据并导入到Hive中。
首先在Hive中创建一个名为cat_group2的表。
- create table cat_group2(group_id string,group_name string)
- row format delimited fields terminated by 't' stored as textfile;
用下面两种方式将cat_group1表中的数据导入到cat_group2表中。
- insert into table cat_group2 select * from cat_group1;
- insert overwrite table cat_group2 select * from cat_group1;
导入完成后,用select语句查询cat_group2表。
select * from cat_group2 limit 10;
4.在创建表的时候从别的表中查询出相应数据并插入到所创建的表中。
Hive中创建表cat_group3并直接从cat_group2中获得数据。
- create table cat_group3 as select * from cat_group2;
创建并导入完成,用select语句查询实验结果。
- select * from cat_group3 limit 10;



