使用 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 表中每列中存在的所有数据的最大值的主要内容,如果未能解决你的问题,请参考以下文章