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
用来降低,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
相关文章推荐
- Python 数据处理,切片,替换,去重,排序
- Python 数据处理,切片,替换,去重,排序
- Java学习之路0721(七)(抽象类、内部类、接口、多态,单子例模式、工厂模式))
- uC/OS-II学习笔记——优先级反转与优先级继承机制
- Python中的类(上)
- C# 获取鼠标坐标
- String to Integer (atoi)
- JAVA从键盘输入数组 2015-07-26 12:01 2人阅读 评论(0) 收藏
- django序列化时使用外键的真实值
- php关于闭包的应用
- 解决:eclipse的CTRL+space 被输入法占用的尴尬
- Xcode 自动生成代码注释文档
- 异步编程
- O(logn)时间复杂度求Fibonacci数列(java)
- 【原创】Kafka console consumer源代码分析(一)
- C语言和C++的不同之处和相通之处
- C语言实现头插法(链表)
- Metasploit测试暴雷漏洞 (编号CVE-2012-1889)
- C语言常见函数重写
- 040.category 调用私有方法