0

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

4

1 回答 1

2

只要您不“从结构上修改”列表或任何这些子列表,这将起作用。只读处理很好。

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

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

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

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

于 2012-07-08T14:59:19.473 回答