您的位置:首页 > 编程语言

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

2015-07-26 12:10 239 查看
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

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: