Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 猪:扁平化关键字_Hadoop_Mapreduce_Apache Pig_Bigdata - Fatal编程技术网

Hadoop 猪:扁平化关键字

Hadoop 猪:扁平化关键字,hadoop,mapreduce,apache-pig,bigdata,Hadoop,Mapreduce,Apache Pig,Bigdata,我对在PIG中使用flatte关键字有点困惑 考虑以下数据集: tuple_record: {details: (firstname: chararray,lastname: chararray,age: int,sex: chararray)} 不使用展平我可以访问如下字段(假设名): display_firstname = FOREACH tuple_record GENERATE details.firstname; display_record = FOREACH flatten_r

我对在PIG中使用
flatte
关键字有点困惑

考虑以下数据集:

tuple_record: {details: (firstname: chararray,lastname: chararray,age: int,sex: chararray)}
不使用
展平
我可以访问如下字段(假设名):

display_firstname = FOREACH tuple_record GENERATE details.firstname;
display_record = FOREACH flatten_record GENERATE firstname;
现在,使用
flatte
关键字:

flatten_record = FOREACH tuple_record GENERATE FLATTEN(details);
描述
给了我以下信息:

flatten_record: {details::firstname: chararray,details::lastname: chararray,details::age: int,details::sex: chararray}
因此,我可以直接访问显示的字段,而无需像这样取消引用:

display_firstname = FOREACH tuple_record GENERATE details.firstname;
display_record = FOREACH flatten_record GENERATE firstname;
与此
flatte
关键字相关的问题如下:

1) 在这两种方法中(即使用或不使用
展平
)哪种方法是实现相同输出的最佳方法

2) 如果不使用
展平
关键字,则无法实现所需输出的任何特殊情况

一头雾水,;请说明它的用途,以及我将在哪些情况下使用它

  • 有时,数据包或元组中有数据,您希望删除该嵌套级别
  • 当您想在运行中切换数据并按特定字段分组时,您需要一种方法将这些条目从包中取出
  • 根据清管器文件:

    扁平操作符在语法上看起来像一个UDF,但实际上是 实际上是一个改变元组和包结构的操作符 一种UDF无法实现的方式。展平un嵌套元组和包。这个 想法是一样的,但操作和结果各不相同 结构类型

    有关更多详细信息,请检查他们已通过示例清楚地解释了FLATTEN的用法