Apache Hive学习笔记2——使用语法与概念原理

数据库操作

默认存储路径

desc database myhive;

指定存储路径

create database myhive2 location '/myhive2';

额外的操作:

EXTERNAL,创建外部表

PARTITIONED BY,分区表

CLUSTERED BY 。分桶表

STORED AS,存储格式

LOCATION,存储位置

数据类型:

INT、DOUBLE、STRING、TIMESTAMP、DATA

string用的比varchar多

复杂类型:

ARRAY有序的同类型集合、MAP、STRUCT字段集合、UNION在有限的取值范围内的一个值

表分类

内部表、外部表、分区表、分桶表

内部表:create table

管理表,删除内部表会直接删除元数据(metadata)和存储数据

外部表 create external table   location

数据位置不是固定的,删除的时候只删除表的信息,不删除数据本身

create table if not exists stu(

  id int,
  name string

);
insert into stu values (1,"zhangsan"),(2,"lisi"); -- 是mapreduce
select * from stu;

其中插入操作是MapReduce操作,需要一段时间

默认存储在/user/hive/warehouse中

指定分隔符:

create table myhive.stu2(id int,name string) row format delimited fields terminated by '\t';

在进行删除stu表之后 查看数据位置,发现数据也已经被删除

外部表:

仅删除元数据表信息,保留数据

创建外部表的时候,分隔符必须存在

create external table test_ext1(id int, name string) row format delimited fields terminated by '\t' location '/tmp/test_ext1'

内部表和外部表的转换:

alter table stu set tblproperties('EXTERNAL'='TRUE');

数据加载与导出

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] IN TABLE tablename;

insert overwrite

INSERT [OVERWRITE | INTO] TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...) [IF NOT EXISTS]] select_statement1 FROM from_statement;

数据导出:

将hive表中的数据导出到其他任意目录,例如linux本地磁盘,例如hdfs,例如mysql等等

insert overwrite [local] directory ‘path’ select_statement1 FROM from_statement;

hive shell

bin/hive -e "select * from myhive.test_load;" > /home/hadoop/export3/export4.txt

分区表

把大的数据划分成多个小分块,

基本语法:

create table tablename(...) partitioned by (分区列 列类型, ......) 
row format delimited fields terminated by '';
可以选择字段作为表分区
分区其实就是 HDFS 上的不同文件夹
分区表可以极大的提高特定场景下 Hive 的操作性能

分桶表

分桶和分区一样,也是一种通过改变表的存储模式,从而完成对表优化的一种调优方式

但和分区不同,分区是将表拆分到不同的子文件夹中进行存储,而分桶是将表拆分到固定数量的不同文件中进行存储
分桶表创建(开启分桶的自动优化,自动匹配reduce task数量和桶一致)
set hive.enforce.bucketing=true;
create table course (c_id string,c_name string,t_id string) clustered by(c_id) into 3 buckets row format delimited fields terminated by '\t';

数据加载:

桶表的数据加载通过loaddata无法执行,只能通过insert select

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值