gpt4 book ai didi

hadoop - 获取 Apache Pig 中每 N 个元组的平均值

转载 作者:可可西里 更新时间:2023-11-01 14:33:06 25 4
gpt4 key购买 nike

假设我有一个包含两列CUSTTYPEAMOUNT 的表。我想添加第三列 NTILE 然后我可以对其进行分组并使用它来获得我的平均值,如下所示:

CUSTTYPE | AMOUNT  | NTILE
----------+---------+----------
RETAIL | 78.00 | 1
RETAIL | 234.00 | 1
RETAIL | 249.00 | 1
RETAIL | 278.00 | 2
RETAIL | 392.00 | 2
RETAIL | 498.00 | 2
RETAIL | 500.00 | 3
RETAIL | 738.00 | 3
RETAIL | 1250.00 | 3
RETAIL | 2029.00 | 4
RETAIL | 2393.00 | 4
RETAIL | 3933.00 | 4

本质上,我试图取每 n 个项的平均值(这里,n=3):

CUSTTYPE | AMOUNT  | NTILE
----------+---------+----------
RETAIL | 187.00 | 1
RETAIL | 389.33 | 2
RETAIL | 829.33 | 3
RETAIL | 2785.0 | 4

来自 Pig 引用 here ,这似乎可以使用 Over() 来实现,但我找不到如何完成此操作的示例。想法?

最佳答案

您可以使用 RANK 运算符对数据的每条记录进行排名:

http://pig.apache.org/docs/r0.14.0/basic.html#rank

像这样:

A = LOAD 'path' AS (schema);
B = RANK A;

然后将每个排名除以 3:

C = FOREACH B generate ($0 + 1) / 3 as NTILE, CUSTTYPE, AMOUNT;

关于hadoop - 获取 Apache Pig 中每 N 个元组的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36656566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com