1.查看一个有很多内容的1.txt文件,可以先看一点内容
head 1.txt
2.hive基本语法-建表
create [external] table table_name(
a int,
b string,
c string
)
partitioned by(非必选,创建分区表 dt string)
clustered by (userid) into 3000 buckets //非必选,分桶子
row format delimited fields terminated by ‘\t’ //必选,指定列之间的分隔符
stored as rcfile //非必选,指定文件的读取格式,默认textfile格式
location ‘/opt’; //非必选,指定文件在hdfs上的存储路径,如果已经有文件,会自动加载,
默认在hive的warehouse下
注意:还可以这样写
create [external] table table_name(
a int comment ‘姓名’,
b string comment ‘年龄’,
c string comment ‘班级’
)…
4.mysql登录
mysql -uroot -proot
5.查看hive中的表
mysql>
use hive;
show tables;
select * from <>;
6.2种建表方式
create table table_name1 as select * from table_name2 limit 10;
create external table if not exists table_name3 like table_name4;
7.hive中加载数据
(1)使用load data命令
从hdfs导入数据,路径可以是目录,会将目录下所有文件导入,但是文件格式必须一致
load data inpath ‘/test/’ [overwrite] into table table_name;
(2)从本地文件系统导入
load data local inpath ‘/test/’ into table table_name;
(3)表对表加载
create table if not exists table_name2 as select * from table_name1;
insert [overwrite] into table table_name2 select * from table_name1;
注意:
1.如果建表语句没有指定存储路径,不管是外部表还是内部表,存储路径都是会默认在
hive/warehouse/xx.db/表名的目录下
加载的数据也会移动到该表的存储目录下。注意是–移动,不是–复制。
2.删除外部表。文件不会删除,对应目录也不会删除。
hadoop fs -ls /opt/test | wc -l
hadoop fs -ls /opt/test | head -10
9.建表时,集合之间的分隔符
collection items terminated by ‘,’ ;
create table stud(
name string,
chengji array(int) //这行用()代替<>
)
collection items terminated by ‘,’ ; //集合之间以,分割
张三 [10,20,30]