加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

【hadoop】hive的Lateral view

(2013-06-18 17:18:58)
分类: 大数据hadoop

lateral view的语法:

lateralView: LATERAL VIEW udtf(expression) tableAlias AS columnAlias (',' columnAlias)
fromClause: FROM
baseTable (lateralView)

描述:

lateral view用于和split、explode等UDTF一起使用的,能将一行数据拆分成多行数据,在此基础上可以对拆分的数据进行聚合,lateral view首先为原始表的每行调用UDTF,UDTF会把一行拆分成一行或者多行,lateral view在把结果组合,产生一个支持别名表的虚拟表。

例子

1、一个lateral view的例子

http://s3/mw690/7e04e0d0tdf6b9c56b472&690view" TITLE="【hadoop】hive的Lateral view" />

create table tbl_split_test(dateid string,name string,type string) ROW FORMAT DELIMITED FILEDS TERMINATED BY '\t';

load data local inpath '/home/sun/test.txt' overwrite into table tbl_split_test;

select dateid ,name,cc from tbl_split_test lateral view explode(split(type,"//|")) tbl_split_test  as cc where cc=4;

结果:
http://s10/mw690/7e04e0d0tdf6c50c84789&690view" TITLE="【hadoop】hive的Lateral view" />

执行过程是先执行from到 as cloumn的列过程,在执行select 和where后边的语句

 

2、多个lateral view

http://s10/mw690/7e04e0d0tdf6c7b0d69c9&690view" TITLE="【hadoop】hive的Lateral view" />

select dateid,aa,bb from tbl_split_test2

    lateral view explode(split(name,"//|")) tbl1 as aa

    lateral view explode(split(type,"//|")) tbl2 as bb

where aa='rr' and bb=2;

这里的执行顺序按照lateral view的出现顺序去执行。

 

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+LateralView

 

 

 

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有