load data [local] inpath ‘/opt/module/datas/student.txt’ [overwrite] | into table student [partition (partcoll = val1,…)]
(1)load data:表示加载数据
(2)local:表示从本地加载数据到 hive 表;否则从 HDFS 加载数据到 hive 表
(3)inpath:表示加载数据的路径
(4)overwrite:表示覆盖表中已有数据,否则表示追加
(5)into table:表示加载到哪张表
(6)student:表示具体的表
(7)partition:表示上传到指定分区
实操:
1,创建一张表
create table 表名(id string,name string) row format delimited fields terminated by '\t'
2,加载本地文件到hive
load data local inpath '/opt/module/dates/student.txt' into table default.student;
3,加载HDFS文件到hive
本地文件上传到HDFS
dfs -put /opt/module/datas/student.txt /user/atguigu/hive
HDFS文件再到hive
load data inpath '/user/atguigu/hive/student.txt' into table default.student;
1,创建分区表
create table student(id int , name string) partitioned by (month string) row format delimited fields terminated by '\t';
2,插入数据
insert into table student partition(month = '201709')values(1,'wangwu')
3,插入(根据单张表查询结果)
insert overwrite table student partition(month='201708')
select id, name from student where month='201709';
4,多插入模式(根据多张表查询结果)
from student
insert overwrite table student partition(month='201707')
select id,name where month='201709'
insert overwrite table student partition(month='201707')
select id,name where month='201709'
create table if not exists student3 as select id,name from student;
1.创建表,并指定在 hdfs 上的位置
create table if not exists student5(id int, name string)
row format delimited fields terminated by '\t'
location '/user/hive/warehouse/student5';
2,上传数据到 hdfs 上
dfs -put /opt/module/datas/student.txt /user/hive/warehouse/student5;
3,查询数据
select * from student5;
1.将查询的结果导出到本地
insert overwrite local directory '/opt/module/datas/export/student'
select * from student;
2.将查询的结果格式化导出到本地
insert overwrite local directory 'opt/module/datas/export/student1'
row format delimited fields terminated by '\t'
select * from student;
3,将查询的结果导出到 HDFS 上(没有 local)
insert overwrite directory '/user/atguigu/student2'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
select * from student;
dfs -get /user/hive/warehouse/student/month=201709/000000_0
/opt/module/datas/export/student3.txt;
Hive Shell 命令导出
Export 导出到 HDFS 上
注意:Truncate 只能删除管理表,不能删除外部表中数据
hive (default)> truncate table student;
1,SQL 语言大小写不敏感
2,平均值:avg(sal)
3,like:
% 代表零个或多个字符(任意个字符)。
_ 代表一个字符。
1,省略连接条件
2,连接条件无效
3,所有表中的所有行相互连接
分区针对的是数据的存储路径,分桶针对的是数据文件
分区提供一个隔离数据和优化查询的便捷方法。不过,并非所有的数据集都可以形成合理的分区
分桶是将数据集分解成更容易管理的若干部分的另一个技术。
(1).先创建分桶表,通过直接导入数据文件的方式
1,数据准备student.txt
2,创建分桶表
create table stu_buck(id int ,name string)
clustered by(id) into 4 buckets
row format delimited fields terminated by ‘\t’
3,查看表结构
desc formatted stu_buck;
Num Buckets: 4
4,导入数据到分桶表中
load data local inpath ‘/opt/module/datas/student.txt’ into table
stu_buck;
(2).创建分桶表时,数据通过子查询的方式导入
(6)需要设置一个属性
###如果员工的 comm 为 NULL,则用-1 代替
select nvl(comm,-1) from emp;
select date_format('2019-06-29','yyyy-MM-dd');
select date_add('2019-06-29',5);
select date_sub('2019-06-29',5);
5)datadiff :两个时间相减
select datediff('2019-06-29','2019-06-24');
#输出距离多少天
select
t1.base,
concat_ws('|', collect_set(t1.name)) name
from
(select name, concat(constellation, ",", blood_type) base
from
person_info) t1
group by
t1.base;
1.函数说明
EXPLODE(col):将 hive 一列中复杂的 array 或者 map 结构拆分成多行。
LATERAL VIEW
用法:LATERAL VIEW udtf(expression) tableAlias AS columnAlias
解释:用于和 split, explode 等 UDTF 一起使用,它能够将一列数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合
select movie, category_name
from
movie_info lateral view explode(category) table_tmp as
category_name;
三种排序:
rank() :1224
dense_rank():1223
row_number():1234