File 向文本文件输入4B个整数的有效算法是什么

File 向文本文件输入4B个整数的有效算法是什么,file,io,File,Io,假设我想在一个文本文件中写1,2,3,4…到4.096B。什么是一种省时的方法。只是按顺序做要花很长时间。所以想知道是否有一种分布式的方式 谢谢你对我的问题的评论。它帮助我在合理的时间内解决了这个问题。以下是我所做的- 使用Excel创建一个文件,从0到1000000创建一百万个整数 在Hadoop中上载此文件 编写一个包含4296行的配置单元查询,如下所示- a0 = SELECT IPDecimal + (100000 * 1) + 1 AS IPDecimal FROM @file; a

假设我想在一个文本文件中写1,2,3,4…到4.096B。什么是一种省时的方法。只是按顺序做要花很长时间。所以想知道是否有一种分布式的方式

谢谢你对我的问题的评论。它帮助我在合理的时间内解决了这个问题。以下是我所做的-

  • 使用Excel创建一个文件,从0到1000000创建一百万个整数
  • 在Hadoop中上载此文件
  • 编写一个包含4296行的配置单元查询,如下所示-

    a0 = SELECT IPDecimal + (100000 * 1) + 1 AS IPDecimal FROM @file;
    a1 = SELECT IPDecimal + (100000 * 2) + 1 AS IPDecimal FROM @file;
    .
    .
    .
    a4295 = SELECT IPDecimal + (100000 * 4295) + 1 AS IPDecimal FROM @file;
    
  • 将上述每个SELECT语句的结果输出到单独的文件中,然后将4296个文件中的整数合并到一个文件中


为什么会被否决?如果要将其写入一个文件,则很难分发。我想您可以编写多个文件,然后将它们复制到一起。但复制步骤是否会花费与顺序写入相同的时间值得怀疑。将循环中的数字写入文件将最大限度地增加驱动器上的I/O,而不是CPU限制。因此,这将很难并行化(除非您对在多个驱动器上写入多个文件很在行)。如果您的I/O操作是I/O和CPU高效的,则“一起拷贝”步骤将花费与写入本身相同的时间,特别是在通过网络时。首先,您应该确保使用高效的输出缓冲来最大限度地使用磁盘I/O。此外,该过程取决于您的数字来源。如果它们只是按顺序加1计算,可能不会有太多好处。但是,如果计算它们需要更高的处理能力,在使用单独的线程将它们写入磁盘之前,您可能会从不同线程中填充不同的输出缓冲区中获益希望将所有整数值从0写入某个较大的值不是您要发送的真实数据,因为在这样一个序列中,除了“它是一个从0到N的所有整数的序列”之外,没有任何真实的信息。分发这样一个序列的最有效方法是编写一个小程序或脚本,在目标计算机上写入该文件。仅最后一步并不比一开始就将所有数字写入一台计算机上的一个文件花费更多的时间?根本不需要。在几分钟内完成,因为每个文件中的数据仅以MB为单位。这些文件都在集群上。而编写一个如此大小的本地文件需要“分钟”以上的时间?在本地,我没有产生4000个线程/进程来完成这项工作,因为我有一个集群,其中有100台机器可供我使用。