我正在开发一个项目,我需要处理大量(数千兆字节)逗号分隔值(CSV)文件。

我基本上做的如下:

  1. 创建一个知道如何的对象 阅读所有相关文件
  2. 向此对象注册一组对数据感兴趣的监听器
  3. 读取每个文件的每一行,调度从数据行创建的对象 每个听众
  4. 每个听众决定这段数据是否有用/相关
  5. 我想知道在源端过滤是否更好,例如每个侦听器都有一个关联的Predicate对象,用于确定是否应将一段给定的数据分派给侦听器,在这种情况下,该进程看起来更像

    1. 创建一个知道如何的对象 阅读所有相关文件
    2. 向此对象注册一组对
    3. 读取每个文件的每一行,调度从数据行创建的对象 如果其关联的Predicate为数据返回true,则为每个侦听器
    4. 净效果是相同的,只是过滤发生的地方。

      (同样,我有这个'流'数据的唯一原因,我一次处理一个条目是因为我正在处理千兆字节的CSV文件,我无法创建一个集合,过滤它,以及然后处理它 - 我需要过滤掉)

有帮助吗?

解决方案

除非对侦听器的调用成本很高(Remoting,WCF,...),否则我会使用一个非常简单的界面,让听众决定如何处理该行。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top