如何在Java中重新划分文件中的每一行
我正在设计一个批量数据加载实用程序,需要非常快。输入是某种格式的一个或多个文件,其中包含要加载到高性能分布式系统的数据。为了保持简单,让我们假设有一个文件,但是这个想法应该很容易推广到多个磁盘上的多个输入文件 我们知道硬盘是串行设备,只有在执行顺序IOs时才能实现最大性能。后端分布式系统功能更强大,允许我同时从多个磁盘加载数据 我的想法是这样的:如何在Java中重新划分文件中的每一行,java,multithreading,iostream,fork-join,Java,Multithreading,Iostream,Fork Join,我正在设计一个批量数据加载实用程序,需要非常快。输入是某种格式的一个或多个文件,其中包含要加载到高性能分布式系统的数据。为了保持简单,让我们假设有一个文件,但是这个想法应该很容易推广到多个磁盘上的多个输入文件 我们知道硬盘是串行设备,只有在执行顺序IOs时才能实现最大性能。后端分布式系统功能更强大,允许我同时从多个磁盘加载数据 我的想法是这样的: 我每个文件有一个生产者线程,它读取大的块,解析块以识别单个记录,然后“重新分区并发送”每个记录到其关联的内存容器中。重新分区将基于每个记录的一个或多个
- 如何设计一个函数来“重新分区并发送”每条记录到其关联的内存容器中
- 如果每个使用者线程在其容器中对一批记录进行排序,然后在一个调用中加载它们,会怎么样?内存中容器的良好数据结构是什么
请分享你的专业知识。如果你能详细说明并提供一些伪代码,那将是非常棒的!谢谢。这很像一项任务。如果您可以将类似Hadoop的基础设施安装到分布式系统中,这应该很容易做到 在缺乏任何相反证据的情况下,假设标准集合可以很好地完成任务。编写它,然后评估性能。然后决定哪些需要改进,如果有的话。是的,这就像一个典型的MapReduce任务。但是,我不确定当map步骤仍在运行时reduce步骤是否可以启动。另一个原因是类似Hadoop的基础设施对于这种情况来说可能太重了。您知道有哪些轻量级的MapReduce框架可以在客户机的内存中运行吗?