2013-08-03 45 views
0

我正在处理一个需要构建直方图的大型数据集。我觉得我的方法就是遍历整个列表,并在第二个数组中标记频率是一种缓慢的方法。关于如何加快这个过程的任何建议?构建直方图更快

+0

您所描述的内容听起来像O(N)。鉴于您需要所有值的计数,我没有看到如何改进(至少在计算复杂性方面)。 –

+0

是的,多数民众赞成在我的想法,因为你需要阅读每个项目至少一次。这很不幸,因为我的数据在1亿的范围内+ –

+0

改善的明显可能性是平行执行 - 直方图的计数项目落入“令人尴尬的平行”类别。 –

回答

2

鉴于直方图是包含每个垃圾箱中所有物品计数的图形,因此如果不访问所有物品,就无法创建一个物品。

但是,您可以:

  1. 创建直方图收集的数据。然后,它不需要时间来生成。

  2. 将数据分解为N个部分,并在每个部分并行工作。当每部分完成计数时,只需对每个部分的结果进行求和即可。 (您也可以将它与#1结合)

  3. 对数据进行采样。从理论上看,只需查看一小部分数据,就可以估算剩余的数据。 The Math

+0

解决方案2听起来像是我最好的选择。谢谢。 –

+0

另外,亚马逊是你的朋友。您可以通过点击来获取Hadoop(EMR)或数据仓库(RedShift)。 https://aws.amazon.com/big-data/ – BraveNewCurrency