用于分区数据集的子列表

时间:2012-07-08 14:22:04

标签: java partitioning bigdata

我有一个列表,其列表的索引达到百万分之100。让我们说列表中的每个列表都是一个文本的句子。我想将这些数据分区以便在不同的线程中进行处理。我使用subList进行拆分 数据并将其发送到不同的线程进行处理。这是分区数据的标准方法吗?如果没有,你能为我建议一些标准的approch吗?

1 个答案:

答案 0 :(得分:2)

只要您没有"structurally modify"列表或任何这些子列表,这将有效。只读处理很好。

还有许多其他“大数据”方法可以处理数百万条记录,因为您可能遇到其他问题:

  • 如果您的程序失败(例如OutOfMemoryError),您可能不希望从头开始重新开始。
  • 您可能希望在问题上抛出> 1台机器,此时您无法在单个JVM内存中共享数据。
  • 在处理完每个句子后,您是否正在构建一些中间结果,然后将其作为第2步处理?您可能需要组合一系列步骤,在每个步骤之前重新分区数据。
  • 你可能会发现你有太多的句子不能同时将它们全部放入记忆中。

这种工作的一个非常常见的工具是Hadoop。您将数据复制到HDFS,对数据运行map-reduce作业(或多个作业),然后在完成后将数据复制出HDFS。

一种更简单的实现方法就是使用数据库并将整数sentence_id列的不同范围分配给不同的线程,并在另一个表中构建输出。