【问题标题】:Split large space separated file into chucks of small files将大空间分隔文件拆分为小文件块
【发布时间】:2016-04-10 23:05:41
【问题描述】:

我有一个大约 2 GB 的输入文件。它包含从 1 到 9999 的数字(可能重复),并且以空格分隔。我想以小块读取文件(例如 100000 或 20000 的块)。我应该采取什么方法?

我计划以分布式方式在不同节点上处理这些数据块。我不能使用 HDFS 或任何其他会自动分块数据的文件系统。

【问题讨论】:

    标签: java algorithm distributed-computing


    【解决方案1】:

    当您在 HDFS 中存储 2GB 数据时,它将被分解为块。 HDFS 的默认块大小为 64MB。您可以将其设置为您希望的任何大小。例如,如果您将大小设置为 100MB,您的数据将被分解为大约 20 个块。

    另一方面,当您通过 MapReduce 处理数据时,您可以通过定义要使用的映射器数量来决定要处理的数据量。您可以通过设置拆分大小来做到这一点。

    例如,如果您的 HDFS 中有 20 个大小为 100MB 的块,如前所述,如果您没有设置任何拆分大小,Hadoop 会为您计算并分配 20 个映射器。但是,如果您指定,例如拆分大小为 25MB,那么您将有 80 个映射器处理您的数据。

    需要注意的是,这只是一个例子。实际上,更多的映射器并不意味着更快的处理时间。您必须考虑优化以获得最佳使用数量的拆分。

    希望这会有所帮助。

    【讨论】:

    • 我不打算将文件存储在 HDFS 中。我正在寻找一些方法来通过程序将文件分成块,然后用于处理。
    猜你喜欢
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    • 2014-03-09
    • 1970-01-01
    • 2014-12-07
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    相关资源
    最近更新 更多