У меня есть данные, как это:Hash Эффективность тонн данных
1 10
1 30
1 40
1 10
2 20
2 20
2 30
3 50
3 10
3 10
3 10
4 20
4 10
Я хотел бы суммировать все значения, если значение первого столбца совпадает, то результат был бы, как это,
1 90
2 70
3 80
4 30
у меня есть код здесь,
while (<DATA>)
{
my ($a, $b) = split;
$hash{$a} += $b;
}
foreach $a (sort keys %hash)
{
$b = $hash{$a};
print OUT "$a $b\n";
}
он работает с данными выборки (около 100Мб), но это, кажется, принимает возрастов, чтобы иметь дело с моими реальными данными (ARO и 100G). Существуют ли способы оптимизации моих кодов?
Цените любые рекомендации заранее!
звучит как хороший кандидат для MapReduce. Вы также можете изучить Threads. –
Определите «возрасты». Откуда берутся эти данные? Если это с жесткого диска, 100 ГБ займет много минут, независимо от обработки, которую вы делаете. –
@OliCharlesworth это с жесткого диска. – Sam