gpt4 book ai didi

hadoop - pig :FLATTEN keyword

转载 作者:可可西里 更新时间:2023-11-01 14:26:43 28 4
gpt4 key购买 nike

我对在 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}

因此我可以直接访问存在的字段而无需像这样取消引用:

display_record = FOREACH flatten_record GENERATE firstname;

我与此 FLATTEN 关键字相关的问题是:

1) 在这两种方式中,哪种方式(即使用或不使用 FLATTEN)是实现相同输出的优化方式?

2)有什么特殊场景不使用FLATTEN关键字,无法达到预期的输出?

完全糊涂了;请说明它的用途以及我将在哪些情况下使用它。

最佳答案

  1. 有时您的包或元组中有数据,您想要移除该层级的嵌套。
  2. 当您想动态切换数据并按特定字段分组时,您需要一种方法将这些条目从包中提取出来。

根据 Pig 文档:

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.

更多详情请查看this link他们已经用例子清楚地解释了FLATTEN的用法

关于hadoop - pig :FLATTEN keyword,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28290030/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com