【问题标题】:Pig Script - Min, Avg, MaxPig 脚本 - 最小值、平均值、最大值
【发布时间】:2023-03-15 04:36:01
【问题描述】:

假设我将这些放在一个文件中...

    1
    2
    3

使用 Pig 脚本,我怎样才能得到这个(每行中的数字、最小值、平均值、最大值)?

    1,1,2,3
    2,1,2,3
    3,1,2,3

请告诉我猪脚本。我可以使用 Pig 内置函数获取 MIN、AVG、MAX,但无法在每一行中全部获取它们。

谢谢 娜迦

【问题讨论】:

    标签: apache-pig


    【解决方案1】:

    使用TOBAG 内置UDF 将您的字段放入包中,然后您可以在该包上使用MINAVGMAX 函数。在一条记录上使用所有三个汇总函数应该没有问题。

    【讨论】:

      【解决方案2】:

      这是我对这个问题的简单解决方案。 我输入了以下数字,

      temp2.​​txt

      1
      2
      3
      4
      5
      .
      .
      16
      17
      18
      19
      20
      

      我遵循了这些步骤,

      1]从文件中加载数据

      2]然后对所有数据进行分组

      3]从分组数据中找到平均值、最小值、最大值

      4]然后foreach在loaded data中生成数据的值和最小值、最大值和平均值。

      代码如下,

      grunt> data = load '/home/temp2.txt' as (val);
      grunt> g = group data all; 
      grunt> avg = foreach g generate AVG(data.val) as a;
      grunt> min = foreach g generate MIN(data.val) as m;
      grunt> max = foreach g generate MAX(data.val) as x;
      grunt> values = foreach data generate val,min.m,max.x,avg.a; 
      grunt> dump values;
      

      以下是输出,

      输出

      (1,1.0,20.0,10.5)
      (2,1.0,20.0,10.5)
      (3,1.0,20.0,10.5)
      (4,1.0,20.0,10.5)
      (5,1.0,20.0,10.5)
      (6,1.0,20.0,10.5)
      (7,1.0,20.0,10.5)
      (8,1.0,20.0,10.5)
      (9,1.0,20.0,10.5)
      (10,1.0,20.0,10.5)
      (11,1.0,20.0,10.5)
      (12,1.0,20.0,10.5)
      (13,1.0,20.0,10.5)
      (14,1.0,20.0,10.5)
      (15,1.0,20.0,10.5)
      (16,1.0,20.0,10.5)
      (17,1.0,20.0,10.5)
      (18,1.0,20.0,10.5)
      (19,1.0,20.0,10.5)
      (20,1.0,20.0,10.5)
      

      【讨论】:

        猜你喜欢
        • 2016-11-04
        • 2016-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-30
        • 1970-01-01
        • 2018-07-07
        • 1970-01-01
        相关资源
        最近更新 更多