使用 pig 查找 pig 表中每列中存在的所有数据的最大值

Posted

技术标签:

【中文标题】使用 pig 查找 pig 表中每列中存在的所有数据的最大值【英文标题】:Find maximum of all data present in each columns in a pig table using pig 【发布时间】:2017-05-05 17:52:07 【问题描述】:

输入格式:

Year_2010 , Year_2009, Year_2008

1.2, 2.4, 3.5
3.4, 3.8, 5.7
4.5, 5.6, 3.4
3.7, 2.6, 4.8

我尝试了以下脚本,它适用于 1 列。

A = Load '/Year.csv' Using PigStorage(',') as (Year_2010:double,Year_2009:double,Year_2008:double); 
B = group A ALL; 
max = Foreach B generate group,MAX(A.Year_2010); 

预期输出:

Year_2010, Year_2009, Year_2008

4.5, 5.6, 5.7

【问题讨论】:

A = Load '/Year.csv' Using PigStorage(',') as (Year_2010:double,Year_2009:double,Year_2008:double); B = A组全部; max = Foreach B 生成组,MAX(A.Year_2010); 我知道这适用于一栏,但找到三栏我不知道该尝试什么 好的,这是一个开始,你在正确的轨道上。只需为所有列应用 MAX。 【参考方案1】:

在将 MAX 应用于列之前,请查看 MAX.GROUP。

A = Load '/Year.csv' Using PigStorage(',') as (Year_2010:double,Year_2009:double,Year_2008:double); 
B = GROUP A ALL;
C = FOREACH B GENERATE MAX(A.Year_2010),MAX(A.Year_2009),MAX(A.Year_2008);
DUMP C;

输出:

【讨论】:

出现如下错误:错误:无法将 org.apache.pig.builtin.MAX 的匹配函数推断为多个匹配或都不匹配。请使用显式演员表。 检查你的数据,看起来你在','后面有一个空格。检查你正在加载的数据类型。它必须是双精度的。MAX应该是大写的。使用“C”而不是max关系

以上是关于使用 pig 查找 pig 表中每列中存在的所有数据的最大值的主要内容,如果未能解决你的问题,请参考以下文章

我可以使用 R 查看表中每列中出现的值的频率吗?

如何列出各个列,其中每个列包含一个 id 计数,其中每列中的 id 不在 MySQL 中每列的不同表中

使用 pig 脚本查找不匹配的记录

显示表中的所有列以及每列中填充的记录数

如何在 apache pig 中将列添加到已经存在的表中

Pig 未将数据加载到 HCatalog 表中 - HortonWorks Sandbox [关闭]