1、explode
将一行数据转换成列数据,可以用于array和map类型的数据。
就是将hive一行中复杂的array或者map结构拆分成多行。
- 用于
array
的语法如下:
select explode(arraycol) as newcol from tablename;
explode():函数中的参数传入的是arrary数据类型的列名。
newcol:是给转换成的列命名一个新的名字,用于代表转换之后的列名。
tablename:原表名。
- 用于
map
的语法如下:
select explode(mapcol) as (keyname,valuename) from tablename;
explode():函数中的参数传入的是map数据类型的列名。
由于map是kay-value结构的,所以它在转换的时候会转换成两列,一列是kay转换而成的,一列是value转换而成的。
keyname:表示key转换成的列名称,用于代表key转换之后的列名。
valuename:表示value转换成的列名称,用于代表value转换之后的列名称。
注意
:这两个值需要在as之后用括号括起来然后以逗号分隔。
2、Lateral View
lateral view是Hive中提供给UDTF的结合,它可以解决UDTF不能添加额外的select列的问题。
latera