猪:FLATTEN关键字
Posted
技术标签:
【中文标题】猪:FLATTEN关键字【英文标题】:Pig:FLATTEN keyword 【发布时间】:2015-02-03 01:45:04 【问题描述】:我对在 PIG 中使用 FLATTEN
关键字感到有些困惑。
考虑以下数据集:
tuple_record: details: (firstname: chararray,lastname: chararray,age: int,sex: chararray)
不使用FLATTEN
,我可以像这样访问一个字段(假设是名字):
display_firstname = FOREACH tuple_record GENERATE details.firstname;
现在,使用 FLATTEN
关键字:
flatten_record = FOREACH tuple_record GENERATE FLATTEN(details);
DESCRIBE
给了我这个:
flatten_record: details::firstname: chararray,details::lastname: chararray,details::age: int,details::sex: chararray
因此我可以直接访问没有dereferencing
的字段,如下所示:
display_record = FOREACH flatten_record GENERATE firstname;
我与FLATTEN
关键字相关的问题是:
1) 两者中哪种方式(即使用或不使用FLATTEN
)是实现相同输出的优化方式?
2) 任何特殊情况下,不使用FLATTEN
关键字,无法达到预期的输出?
完全糊涂了;请说明它的用途以及我将在哪些情况下使用它。
【问题讨论】:
【参考方案1】:-
有时您的数据包或元组中有数据,并且您想删除该级别的嵌套。
当您想要动态切换数据并按特定字段分组时,您需要一种方法将这些条目从包中提取出来。
根据 Pig 文档:
FLATTEN 运算符在语法上看起来像一个 UDF,但它是 实际上是一个改变元组和包结构的操作符 UDF 无法做到的方式。展平未嵌套的元组和袋子。这 想法是一样的,但是每个人的操作和结果都不一样 结构类型。
更多详情请查看this link,他们已经通过示例清楚地解释了 FLATTEN 的用法
【讨论】:
以上是关于猪:FLATTEN关键字的主要内容,如果未能解决你的问题,请参考以下文章
PyTorch基础(15)-- torch.flatten()方法
PyTorch基础(15)-- torch.flatten()方法
PyTorch基础(15)-- torch.flatten()方法