Pig Flatten 解包操作,解元组
Flatten Operator
The FLATTEN operator looks like a UDF syntactically, but it is actually an operator that changes the structure of tuples and bags in a way that a UDF cannot. Flatten un-nests tuples as well as bags. The idea is the same, but the operation and result is different
for each type of structure.
For tuples, flatten substitutes the fields of a tuple in place of the tuple. For example, consider a relation that has a tuple of the form (a, (b, c)). The expression GENERATE $0, flatten($1), will cause that tuple to become (a, b, c).
For bags, the situation becomes more complicated. When we un-nest a bag, we create new tuples. If we have a relation that is made up of tuples of the form ({(b,c),(d,e)}) and we apply GENERATE flatten($0), we end up with two tuples (b,c) and (d,e). When
we remove a level of nesting in a bag, sometimes we cause a cross product to happen. For example, consider a relation that has a tuple of the form (a, {(b,c), (d,e)}),
commonly produced by the GROUP operator. If we apply the expression GENERATE $0, flatten($1) to this tuple, we will create new tuples: (a, b, c) and (a, d, e).
Also note that the flatten of empty bag will result in that row being discarded; no output is generated. (See alsoDrop Nulls Before a Join.)
grunt> cat empty.bag
{} 1
grunt> A = LOAD 'empty.bag' AS (b : bag{}, i : int);
grunt> B = FOREACH A GENERATE flatten(b), i;
grunt> DUMP B;
grunt>
For examples using the FLATTEN operator, see FOREACH.
版权声明:本文为博主原创文章,未经博主允许不得转载。
最新文章
- 使用Navicat导入导出表的数据做测试(转载)
- PHP isset 函数作用
- Support Vector Machines for classification
- Android更改imagebutton为纯色方法
- mvc 路由 使用
- GitHub上最火的40个iOS开源项目
- Xamarin For Visual Studio 3.7.165 完整离线破解版
- Android IPC机制全解析<;一>;
- python - dict.setdefault
- ASP.NET MVC编程——控制器
- Android 网络图片加载之cude 框架
- telnet操作memcache
- U盘安装CentOS系统、raid5制作以及nohup的使用
- struts2+springmvc+hibernate开发。个人纪录
- MongpDB 学习手册 - 索引
- 大话前端解析Json对象
- js实现的map方法
- 在java代码中执行js脚本,实现计算出字符串“(1+2)*(1+3)”的结果
- [转]Centos7下面配置静态IP
- HDU 2391 Filthy Rich (dp)
热门文章
- bigdecimal类型除法问题
- delphi通过Idhttp和php交互
- bzoj 1579: [Usaco2009 Feb]Revamping Trails 道路升级 优先队列+dij
- Oracle数据库操作语言(DML)
- java:Map借口及其子类HashMap四
- 修改(python) mysql 数据库 使其可以支持插入中文
- uva 111 History Grading(lcs)
- WebElement接口获取值
- Tomcat_异常_03_Tomcat日志(Logger)中文乱码
- 理解SetCapture()和ReleaseCapture()及GetCapture()作用