hive总结

Hive基本环境:完好可用的hadoop集群(存放数据),一个数据库,一般选用mysql关系型 数据库(存放元数据)。
Hive四大概念:库,表,分区,分桶
Hive数据类型,复杂数据类型。

Hive基础命令:
进入hive命令行:hive
查看所有数据库:show datavases;
创建数据库:create database log;
使用数据库:use log;
语句与sql语法基本一致。

创建一个hive数据表:
create table t_emp(
eid string,
ename string,
did string
)
row format delimited
fields terminated by ‘,’;
查看创建表信息:desc t_emp;
查看创建表的详细信息:desc extended t_emp;

Hive加载数据的方式:
1,从本地加载
(1)load data local inpath …
(2)Eg:LOAD DATA LOCAL INPATH ‘/usr/software/hive-test.txt’ INTO TABLE t_emp;
2,从hdfs加载
(1)load data inpath …
(2)Eg:LOAD DATA INPATH ‘/flume/hive-test.txt’ INTO TABLE t_emp;
3,在创建表是就指定加载数据文件的位置
(1)create table … location ‘path’
(2)Eg: create table t_emp(
> eid string,
> ename string,
> did string
> )
> row format delimited
> fields terminated by ‘,’
> location ‘/flume’;

4,先把数据文件对应一个原始表,再根据需求创建结果表的描述,再从原始表中使用insert into … select from …,做到数据和结果表的对应
(1)创建一个原始表:使用3中(2)命令。
(2)创建一个结果表:去除did字段。
(3) create table t_result(
> eid string,
> ename string
> )
> row format delimited
> fields terminated by ‘,’
(4)插入数据到结果表:
Insert into t_result select eid,ename from t_emp;

5,分区
(1)静态分区:
create table t_emp(
name string,
age string
)
partitioned by (sex string)
row format delimited
fields terminated by ‘,’;

加载数据:
LOAD DATA LOCAL INPATH ‘/usr/software/hive-test.txt’ INTO TABLE t_emp partition (sex=‘man’);

linux本地文件:
aa01,20
aa02,23
aa03,18
aa04,22
aa05,19
aa06,20

使用静态分区,在插入数据时需要人为进行数据分类,而且插入数据不能包含分区 信息。
(2)动态分区:
1)创建分区表:
create table t_emp(
name string,
age string
)
partitioned by (sex string)
row format delimited
fields terminated by ‘,’;
2)启动分区
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
3)插入数据。动态分区只有在SQL执行时才能决定。所以插入语句只能是sql,即动态分区需要建立原始表和结果表。
a.创建原始表
create table t_emp01(
name string,
sex string,
age string
)
row format delimited
fields terminated by ‘,’
location ‘/flume’;
b.插入数据
insert into table t_emp
partition (sex)
select name,age,sex
from t_emp01;
分区数据再sql语句中放到最后位置。

6,分桶
(1)创建表:指定了根据age分成4个桶。
只是说明了表会分桶,具体的分区需要在导入数据时产生。最好的导入数据方式是 insert into table;分桶一般选择不会重复的数据。

create table t_emp(
name string,
sex string,
age string
)
clustered by (age) sorted by(age) into 4 buckets
row format delimited
fields terminated by ‘,’;
(2)插入数据
insert into table t_emp
select name,sex,age
from t_emp01;

7,分区分桶,结合以上即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值