Lateral View 语法

Lateral View 语法

1 lateralView: LATERAL VIEW udtf(expression) tableAlias AS columnAlias (‘,‘ columnAlias)*
2 fromClause: FROM baseTable (lateralView)*

Lateral View 描述

Lateral View 用于UDTF(user-defined table generating functions)中将行转成列,和split, explode等UDTF一起使用,它能够将一行数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合。Lateral View 首先为原始表的每行调用UDTF,UTDF会把一行拆分成一或者多行,Lateral View 再把结果组合,产生一个支持别名表的虚拟表。

目前Lateral View 不支持有上而下的优化。如果使用Where子句,查询可能将不被编译。解决方法:在查询之前执行set hive.optimize.ppd=false

例子

表pageAds。它有两个列:pageid、adid_list:

Column name

Column type


pageid


STRING


adid_list


Array<int>

pageid

adid_list


front_page


[1, 2, 3]


contact_page


[3, 4, 5]

执行语句:

1 SELECT pageid, adid
2 FROM pageAds LATERAL VIEW explode(adid_list) adTable AS adid;

将输出如下结果:

pageid (string)

adid (int)


"contact_page"


3


"contact_page"


4


"contact_page"


5


"front_page"


1


"front_page"


2


"front_page"


3

count/group可以被使用:

1 SELECT adid, count(1)
2 FROM pageAds LATERAL VIEW explode(adid_list) adTable AS adid
3 GROUP BY adid;

int adid


count(1)


1


1


2


1


3


2


4


1


5


1

多个Lateral View

例如下面的语句:

1 SELECT * FROM exampleTable
2 LATERAL VIEW explode(col1) myTable1 AS myCol1
3 LATERAL VIEW explode(myCol1) myTable2 AS myCol2;

假设有base表如下:


Array<int> col1


Array<string> col2


[1, 2]


[a", "b", "c"]


[3, 4]


[d", "e", "f"]

语句:

1 SELECT myCol1, col2 FROM baseTable
2 LATERAL VIEW explode(col1) myTable1 AS myCol1;

将得到如下结果:


int mycol1


Array<string> col2


1


[a", "b", "c"]


2


[a", "b", "c"]


3


[d", "e", "f"]


4


[d", "e", "f"]

多个 LATERAL VIEW 的语句:

1 SELECT myCol1, myCol2 FROM baseTable
2 LATERAL VIEW explode(col1) myTable1 AS myCol1
3 LATERAL VIEW explode(col2) myTable2 AS myCol2;

结果如下:


int myCol1


string myCol2


1


"a"


1


"b"


1


"c"


2


"a"


2


"b"


2


"c"


3


"d"


3


"e"


3


"f"


4


"d"


4


"e"


4


"f"

Lateral View 语法

时间: 2024-08-29 01:35:16

Lateral View 语法的相关文章

hive使用lateral view explode和split将一行拆多行

问题: 有一个表(表名:book,两个字段:id,desc) id     desc 001    书名: 追风筝的人, ISBN编号: 9787208061644, 作者: 卡勒德.胡赛尼 002    书名: 秘密花园, ISBN编号: 9787550252585, 作者: 乔汉娜·贝斯福 需求: 其中desc字段包含了几个参数信息,需把它拆分开来,一行一个参数,结果如下 001    书名: 追风筝的人 001    ISBN编号: 9787208061644 001     作者: 卡勒

hive行转多列LATERAL VIEW explode

源表(table1)数据{A:string B:array<BIGINT> C:string} A                         B                                C 190     [1030,1031,1032,1033,1190]      select id191     [1030,1031,1032,1033,1190]      select id 希望的结果是: 190    1030  select id 190    103

lateral view

原文地址:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+LateralView# lateral view用于和split, explode等UDTF一起使用,它能够将一列数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合. 一个简单的例子,假设我们有一张表pageAds,它有两列数据,第一列是pageid string,第二列是adid_list,即用逗号分隔的广告ID集合: string pageid Ar

hive splict, explode, lateral view, concat_ws

hive> create table arrays (x array<string>) > row format delimited fields terminated by '\001' > collection items terminated by '\002' > ; OK Time taken: 0.574 seconds hive> show tables; OK arrays jigou Time taken: 0.15 seconds, Fetch

Hive lateral view explode

select 'hello', x from dual lateral view explode(array(1,2,3,4,5)) vt as x 结果是: hello   1 hello   2 hello   3 hello   4 hello   5 来自为知笔记(Wiz)

Lateral View使用指南

https://blog.csdn.net/sunnyyoona/article/details/62894761 select sum(pitem) from (select map_values(repay_principal) principal from dw.dw_xxx) t lateral view explode (t.principal) ptab as pitem 原文地址:https://www.cnblogs.com/0xcafedaddy/p/9560603.html

Hive入门到剖析(二)

5 Hive参数 hive.exec.max.created.files 说明:所有hive运行的map与reduce任务可以产生的文件的和 默认值:100000 hive.exec.dynamic.partition 说明:是否为自动分区 默认值:false hive.mapred.reduce.tasks.speculative.execution 说明:是否打开推测执行 默认值:true hive.input.format 说明:Hive默认的input format 默认值: org.a

Hive 12、Hive优化

要点:优化时,把hive sql当做map reduce程序来读,会有意想不到的惊喜. 理解hadoop的核心能力,是hive优化的根本. 长期观察hadoop处理数据的过程,有几个显著的特征: 1.不怕数据多,就怕数据倾斜. 2.对jobs数比较多的作业运行效率相对比较低,比如即使有几百行的表,如果多次关联多次汇总,产生十几个jobs,没半小时是跑不完的.map reduce作业初始化的时间是比较长的. 3.对sum,count来说,不存在数据倾斜问题. 4.对count(distinct )

Hive ive优化 (important)

Hive ive优化 要点:优化时,把hive sql当做map reduce程序来读,会有意想不到的惊喜. 理解hadoop的核心能力,是hive优化的根本. 长期观察hadoop处理数据的过程,有几个显著的特征: 1.不怕数据多,就怕数据倾斜. 2.对jobs数比较多的作业运行效率相对比较低,比如即使有几百行的表,如果多次关联多次汇总,产生十几个jobs,没半小时是跑不完的.map reduce作业初始化的时间是比较长的. 3.对sum,count来说,不存在数据倾斜问题. 4.对count