pig 编程指南笔记(三) 高级应用

本文介绍了Hadoop中处理复杂数据结构的方法,如使用flatten降低嵌套级别、嵌套foreach进行组合操作、cross进行叉积操作等。同时,还探讨了mergejoin、skewjoin、cogroup和union等数据整合技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

flatten:

  • 用来降低,bag、tuple的嵌套级别!
  • hadoop中存储是相对比较廉价的,所以可以将一些在sql中要单独提出存储其它标的数据,直接存储在记录中,用冗余减少join操作,应为在hadoop中join是很耗时的,在数据中嵌套bag,可以看做,记录中嵌套另一条记录!
  • 有时需要将这个条码分离出来,则可以用flatten
  • 如果bag中有多条数据,则会用这条数据,与原记录做叉积!
  • 如果bag中无数据,则会当前记录会被丢弃,所以要不想被丢弃,需要先做处理

 

嵌套foreach:

就是对每一条数据,使用一些列操作,使得在foreach 对每一条数据嵌套更多的组合操作!

一般嵌套的操作都是串行!

理论上可以支持,任意语句嵌套,但是目前只支持filter,limit,orderby,distinct!

 

 

 

mergejoin

skewjoin:

 

cogroup:

将有相同键值的多个文件,按相同键值收集到一起

收集键值过程会触发一个reduce过程!

 

 

 

union:

union是将两个文件合成一个文件,不需要额外的reduce操作!

union的两个文件如果有相同的模式,或能通过隐式转换,则合并的文件具有相同的模式,否则没有模式(不同记录,模式可能会不同)

union是更具字段名字合并的

若要求结果有模式,则可以使用schema,会将不同的添加进来,相同的合并,之前记录没有相关字段的用null填充!

cross:

就是数学中的叉积,会产生 n*m条数据记录

会生成一个综合键,进行join

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值