`
heipark
  • 浏览: 2094707 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

理解Pig中flatten关键字

    博客分类:
  • pig
 
阅读更多

flatten在英文的意思弄平整的意思,这个操作符在不同的场景有不同的功能。

 

1. flatten tuple

flatten会把tuple内容打开,下面举例:

-- A结构:(a, (b, c))
B = foreach A GENERATE $0, flatten($1)

B返回结果(a,b,c)

 

2. flatten bag

flatten会把bag内容打开,每个tuple是一行,即列转换为行

 

-- A结构:({(b,c),(d,e)})
B = foreach A generate flatten($0)

B返回结果
(b,c)
(d,e)

 

 

官方文档原文内容
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).

 

 

分享到:
评论

相关推荐

    pig-0.9.1.tar

    Apache Pig是Hadoop生态系统中的一个高级数据处理工具,它提供了一种基于脚本语言的接口,使得用户可以更方便地进行大规模数据集的分析。Pig-0.9.1是Pig的一个早期版本,虽然相比当前的版本可能功能上有所限制,但在...

    Laravel开发-flatten

    4. **集成与配置**:要在Laravel项目中使用"flatten"包,首先需要通过Composer进行安装,然后在服务提供者中注册该包,并在配置文件中设置相关参数,如存储路径、排除的URL等。开发者还可以自定义事件监听器,以满足...

    geojson-flatten:在geojson中展平多部分几何和几何集合

    geojson-flatten 将文件中的MultiPoint,MultiPolygon,MultiLineString和GeometryCollection几何图形展平为简单的非复杂几何图形。 如果传入FeatureCollection,则返回FeatureCollection。 如果传入单个功能,则...

    大数据技术基础实验报告-pig的安装配置与应用.doc

    在这个实验报告中,我们将深入理解Pig的安装、配置以及基本使用方法。 **一、Pig的安装与配置** 在Linux系统中安装Pig通常涉及以下步骤: 1. **安装Java开发工具(JDK)**:Pig依赖于Java环境,确保系统已安装JDK。...

    flatten_2.0

    在"flatten"这个例子中,我们可能学习到如何使用GLSL实现特定的图形效果,如平展(flatten)表面。这可能涉及到对深度信息的处理,或者对物体表面进行某种形式的标准化,使得所有物体看起来都处于同一平面,消除了...

    Tool for Flatten A Folder

    标题“Tool for Flatten A Folder”指的是一个用于整理和扁平化文件夹结构的命令行工具。这个工具的主要功能是帮助用户将多个不同目录下的特定文件复制到一个单一的目标目录中,从而实现文件夹的扁平化,使得文件...

    Python中flatten( )函数及函数用法详解

    在Python编程语言中,`flatten()`函数主要用于处理NumPy库中的数组对象,它将多维数组转换为一维数组。这个函数是`numpy.ndarray.flatten`的一...正确理解和应用`flatten()`,可以帮助我们编写出更加简洁和高效的代码。

    Python中flatten( ),matrix.A用法说明

    在Python的NumPy环境中,`matrix.A`的理解和使用对于处理矩阵数据至关重要。这个属性允许你在需要数组而非矩阵操作的时候轻松地切换,特别是在处理线性代数问题或与其他不支持`matrix`类的函数和库交互时。 总的来...

    前端开源库-obj-flatten

    "obj-flatten"库的核心功能是遍历输入的嵌套对象,通过递归的方式访问每个属性,并将路径和对应的值存储到新的扁平化对象中。例如,如果有一个嵌套对象`{a: {b: {c: 1}}}`,使用"obj-flatten"后,会得到`{a.b.c: 1}`...

    如何使用Pig集成分词器来统计新闻词频?

    在Pig中使用Jieba,我们需要先将Jieba的jar包添加到Hadoop的类路径中。这通常在Pig的启动脚本或者Hadoop的配置文件(如hadoop-env.sh)中完成。 接着,我们可以创建一个自定义函数(UDF,User Defined Function)来...

    Python库 | flatten_json-0.1.12.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:flatten_json-0.1.12.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    前端大厂最新面试题-flatten.docx

    在前端开发领域,面试题经常涉及对数据结构和算法的理解,特别是数组的处理。这里讨论的是如何拍平(flatten)一个多维数组,即将嵌套的数组展开为一维数组。在最新的ECMAScript规范中,确实引入了`flat()`方法来...

    02-array-flatten.md

    为了更好地理解这一部分,我们将从面试的角度,详细解读面试题目"Array flatten"的相关知识点。 首先,我们需要了解为什么面试会考察编写扁平化数组的函数。面试考察的不仅仅是一个人的编码能力,还包括代码的规范...

    flatten-maven-plugin:扁平化Maven插件

    MojoHaus Flatten Maven插件 这是 。 1.0.x分支: 快速开始 这个插件会生成您pom.xml的扁平版本,并使maven可以安装和部署该版本,而不是原始pom.xml。 <groupId>org.codehaus.mojo <artifactId>flatten-...

    js代码-flatten

    在JavaScript编程中,"flatten"通常指的是将一个多维数组转换为单层扁平化数组的过程。这个过程在处理复杂的数据结构时非常有用,比如当你需要遍历或操作嵌套数组中的所有元素时。本篇文章将深入探讨JavaScript中...

    flatten-maven-plugin:简化用于项目部署的Maven项目描述符

    Flatten Maven插件 生产发布 开发发布 安装 相似的插件 插件功能 取代公开的身份 解决依赖版本范围 根据范围排除依赖项 可选地包括传递依赖 根据xml标签名称删除pom.xml成员 用生成的pom.xml.flatten切换项目pom....

    matlab开发-Flattencellarray

    在MATLAB编程环境中,开发过程中有时会...通过理解并应用这种转换,可以更有效地管理和处理复杂数据结构,特别是在涉及大规模数据分析和算法开发的项目中。同时,尊重并遵循相关的许可协议,是每个开发者的责任和义务。

    flatten-js:二维几何的Javascript库

    flatten-js是一个JavaScript库,用于处理抽象的几何形状,例如点,矢量,线,射线,线段,圆,弧和多边形。 形状可以组织成“平面集”-支持空间查询的可搜索容器。 flatten-js提供了许多有用的方法和算法,例如查找...

Global site tag (gtag.js) - Google Analytics