gpt4 book ai didi

java - pig : Group by ranges/binning data

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

我有一组整数值,我想将它们分组到一堆容器中。

示例:假设我有 1 到 1000 之间的一千个点,我想做 20 个 bin。

有没有办法将它们分组到一个 bin/array 中?

此外,我不会提前知道范围有多宽,因此我无法硬编码任何特定值。

最佳答案

如果您有最小值和最大值,则可以将范围除以 bin 的数量。例如,

-- foo.pig
ids = load '$INPUT' as (id: int);
ids_with_key = foreach ids generate (id - $MIN) * $BIN_COUNT / ($MAX- $MIN + 1) as bin_id, id;
group_by_id = group ids_with_key by bin_id;
bin_id = foreach group_by_id generate group, flatten(ids_with_key.id);
dump bin_id;

然后你可以使用下面的命令来运行它:

pig -f foo.pig -p MIN=1 -p MAX=1000 -p BIN_COUNT=20 -p INPUT=your_input_path

脚本背后的想法是我们可以将范围 [MIN, MAX] 除以 BIN_COUNT 以获得每个 bin 的大小:(MAX - MIN + 1)/BIN_COUNT,称为 BIN_SIZE。然后我们将 id 映射到 bin 编号:(id - MIN)/BIN_SIZE,并将它们分组。

关于java - pig : Group by ranges/binning data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17258153/

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