文档章节

hive一行变多行

 张欢19933
发布于 2017/08/10 17:47
字数 361
阅读 49
收藏 0

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

单个LATERAL VIEW:

源表(table1)数据{A:string B:array<BIGINT> C:string}

A                         B                                C

190     [1030,1031,1032,1033,1190]      select id
191     [1030,1031,1032,1033,1190]      select id

希望的结果是:

190    1030  select id

190    1031  select id

190    1032  select id

190    1033  select id

190    1190  select id

191    1030  select id

191    1031  select id

191    1032  select id

191    1033  select id

191    1190  select id

故使用select A,B,C from table_1 LATERAL VIEW explode(B) table1 as B得到上述结果

多个LATERAL VIEW的介绍:

LATERAL VIEW clauses are applied in the order that they appear. For example with the following base table:

Array<int> col1

Array<string> col2

[1, 2]

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

[3, 4]

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

SELECT myCol1, myCol2 FROM baseTable

LATERAL VIEW explode(col1) myTable1 AS myCol1

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"

复杂方式:

select * from tb_split;

20141018  aa|bb 7|9|0|3

20141019  cc|dd  6|1|8|5

使用方式:

select datenu,des,type from tb_split 

lateral view explode(split(des,"\\|")) tb1 as des

lateral view explode(split(type,"\\|")) tb2 as type

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

© 著作权归作者所有

共有 人打赏支持
粉丝 31
博文 432
码字总数 213442
作品 0
海淀
Hive 中的复合数据结构简介以及一些函数的用法说明

目前 hive 支持的复合数据类型有以下几种: map (key1, value1, key2, value2, ...) Creates a map with the given key/value pairs struct (val1, val2, val3, ...) Creates a struct with ......

大数据之路
2013/04/07
0
4
Sqoop1.4.6安装使用及避坑

经过这么几天的折腾,发现 Sqoop1 真的比 Sqoop2 方便好用的多,Sqoop2 坑真是太多了,搞不定。Sqoop1 坑少也稳定,但是零基础使用过程中也是有几点需要注意的。 官方下载:Sqoop 官网 官方使...

hblt-j
07/24
0
0
通过自定义的InputFormat处理多行错误日志

我想通过自定义的InputFormat来处理多行错误日志,主要策略是读入时对其进行预处理,把多行错误日志归并为一行,然后通过hive的RegexSerDe来处理,以下是自定义类的代码: import java.io.I...

yanyuxin
2012/09/24
600
1
6、Hive的特殊分隔符处理

hive读取文件机制 1、使用inputformat对象来读取文件,默认是。返回一行行的数据。 2、使用SerDe类默认是来对每一行数据进行字段切割,对应表中的字段。 问题:SerDe默认情况下只支持“单字符...

刘付kin
2016/12/01
29
0
Pig、Hive、MapReduce 解决分组 Top K 问题

问题: 有如下数据文件 city.txt (id, city, value) cat city.txt 1 wh 500 2 bj 600 3 wh 100 4 sh 400 5 wh 200 6 bj 100 7 sh 200 8 bj 300 9 sh 900 需要按 city 分组聚合,然后从每......

大数据之路
2012/10/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

nginx访问日志-日志切割-静态文件不记录日志和过期时间

nginx访问日志: vim /usr/local/nginx/conf/nginx.conf #搜索log_format 该字段定义日志格式,默认如下: #combined_realip日志格式的名字,可随意定义; 定义访问日志: 需在虚拟主机配置文...

ZHENG-JY
6分钟前
0
0
180.mariadb 主从复制

参考:https://blog.csdn.net/chengxuzaza/article/details/62042920 睡觉睡觉,明天写 1.效果 当主库中数据有变化的时候,从库就自动同步 2. 环境要求 至少两台 linux服务器 (教程:https...

Lucky_Me
16分钟前
0
0
erlng file id3v1 id3v1.1

%% ---%% Excerpted from "Programming Erlang",%% published by The Pragmatic Bookshelf.%% Copyrights apply to this code. It may not be used to create training material, %% ......

xueyuse0012
17分钟前
1
0
RabbitMq的安装

环境Centos6.5 32位 JDK 1.7.8 Jdk的卸载 rpm -qa|grep jdk yum –y remove 上边的安装包 JDK的安装 Rpm –ivh jdk安装包 配置环境变量 export JAVA_BIN=/usr/java/jdk1.7.0_80/bin export J......

DemonsI
21分钟前
0
0
http和https协议

HTTPS全称为Hypertext Transfer Protocol over Secure Socket Layer,中文含义为“超文本传输协议在安全加密字层”,简单来说就是加密数据传输,通俗的说就是安全连接。 HTTPS安全超文本传输...

寰宇01
27分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部