【问题标题】:Execute MapReduce job only on a part of a HDFS file仅在 HDFS 文件的一部分上执行 MapReduce 作业
【发布时间】:2017-03-27 14:32:33
【问题描述】:

我在 HDFS (~20Gb) 中有一个大文件,我通常在该文件上执行 MapReduce 作业。创建了大约 170 个映射器。使用的InputFormatFileInputFormat

现在我想只对文件的一部分执行 MapReduce 作业(例如,文件的前 40Mb)。

有没有简单的方法来执行此操作?

感谢您的帮助。

【问题讨论】:

    标签: hadoop mapreduce hdfs


    【解决方案1】:

    ​大家好,

    最后,我找到了一个解决方案,包括派生FileInputFormat 类并覆盖getSplits 方法,以便仅获取与HDFS 文件所需部分相对应的拆分。

    在这个方法中,我调用超类来获取InputFileFormat类生成的拆分。由于作业的配置,我设法获得了一些信息,例如我想要读取的 HDFS 文件的开头和 HDFS 文件的结尾。最后,所有从超类的getSPlits方法得到的split的开头和结尾与之前的信息进行比较,如果它们与HDFS文件的所需部分匹配则返回。

    【讨论】:

    • 请检查内置的 TextInputFormat , KeyValueInputFormat。我相信您正在尝试重新发明轮子。
    • 嗨@KrazyGautam,TextInputFormat 不是我需要的,因为我处理的是二进制文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-01
    • 1970-01-01
    相关资源
    最近更新 更多