use*_*944 3 hadoop mapreduce apache-pig bigdata
我FLATTEN对PIG 中关键字的使用感到困惑.
考虑以下数据集:
tuple_record: {details: (firstname: chararray,lastname: chararray,age: int,sex: chararray)}
Run Code Online (Sandbox Code Playgroud)
不使用FLATTEN我可以访问一个字段(假设名字),如下所示:
display_firstname = FOREACH tuple_record GENERATE details.firstname;
Run Code Online (Sandbox Code Playgroud)
现在,使用FLATTEN关键字:
flatten_record = FOREACH tuple_record GENERATE FLATTEN(details);
Run Code Online (Sandbox Code Playgroud)
DESCRIBE 给我这个:
flatten_record: {details::firstname: chararray,details::lastname: chararray,details::age: int,details::sex: chararray}
Run Code Online (Sandbox Code Playgroud)
因此,我可以直接访问存在的字段,而不是dereferencing这样:
display_record = FOREACH flatten_record GENERATE firstname;
Run Code Online (Sandbox Code Playgroud)
我与此FLATTEN关键字相关的问题是:
1)两者之间的哪种方式(即使用或不使用FLATTEN)是实现相同输出的优化方式?
2)任何不使用FLATTEN关键字的特殊情况,都无法实现所需的输出?
完全糊涂; 请澄清其用途,以及我将使用它的所有场景.
| 归档时间: |
|
| 查看次数: |
8489 次 |
| 最近记录: |