学习Hive(二)Hive分区、DML、HiveSerDe、Hive函数。

一、Hive的分区:我理解为类似mysql分表的概念。Hive表所在的文件夹下面将数据文件按规则分成多个。这样单涉及其中一个文件时会提高效率。

建表的同时分区.注意分区也是一列。所以下面设置分区,属性处就不能有一样的(如下列中的age)。避免重复。

下面为单分区建表:

create table psn3
(
id int,
name string,
likes array<string>,
address map<string,string>
)
row format delimited
fields terminated by ','
collection items terminated by '-'
map keys terminated by ':';

加载数据并在处理时分区:load data local inpath '/root/data/data' into table psn3 partition(age=20);

分区后效果:

当然还有双分区、多分区等。

注意分区是在创建表的时候指定的。不可以后需添加。而官网中的add partition其实是添加分区的值(不能修改或添加列),但是分区的顺序可以换(当多个分区时),他真正的分区顺序是在定义是完成的,这里是个匹配的过程。修改语句如下

alter table psn4 add partition(age=30);

分区的删除: 可以删除单个分区(也可删除多个中的其中一个);

以上为静态分区。

查询分区信息:show partitions psn3;

修复分区:分区信息为元数据信息。如果文件存储格式按照分区规则存储,新建分区的表后,直接查询(中间没有拉取数据形成分区的过程),这时直接查询是查不到结果的。执行:Msck repair table psn5;产生了元数据信息。所以修复了分区。

 

二、DML

创建表除了之前提到的方式,还有几种:

注意:之前提到的load data local input 'x/x' into table xxx 中的local去掉则是从hdfs中拉取数据。但是被拉取后数据所在文件是移动过来的。原位置文件会不再存在。

1、这个注意 要insert的表要提前创建好。

from psn
insert overwrite table psn6
select id,name
insert overwrite table psn7
select id,name;

删除与修改的操作进行时要实现事务。一般不做删除与修改。

 

三、HiveSerDe

类似 row format的功能:

 

四、Hive Beeline:客户端。常使用。

Beeline是hiveserver2的客户端hiveserver2支持同时多个远程访问。支持JDBC/ODBC访问。

代码:

五、Hive函数。这里自行阅读官网。直接搜UDF即可。

Hive sql中不支持in 、exits。

map与array的个数。

自定义函数:打包完成后,最后一句是创建临时函数。

 

 

第二种:

 

 

练习:之前的单词统计使用hive sql完成?

数据:word as scala 

           java scala as love sel

          word java python ll

1、数据放到linux(略)

2、创建表 拉取数据:

create  table wc3
(
line string
);

load data local inpath 'test.txt' into table wc3;

3、创建结果表:

create table wc4
(
word string,
count int
)
row format delimited
fields terminated by ',';

4、数据转换:

from (select explode(split(line,' ')  w) from wc3)t

insert into wc4

select w,count(w) group by w;

完成。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值