gpt4 book ai didi

hadoop - 一个完整的单个文件作为映射器的记录

转载 作者:行者123 更新时间:2023-12-02 21:15:33 26 4
gpt4 key购买 nike

这种情况的可用选项和最佳实践是什么:将单个文件作为输入传递给映射器或重新表述它 - 映射器将整个文件作为单个记录处理。就像在默认情况下,每个记录/行都会调用映射器,但是如何处理/传递整个文件作为记录

通过阅读,我遇到了几个选项:

  • 序列文件:因为它对大号有好处。可以压缩和压缩在一起的较小文件,然后键将是文件名,值将是实际的 zip 文件。
  • CombinefileInput 格式:这是我遇到的一种方式,也是 WholeFileInputFormat 。但整个文件输入格式仅扩展了 CombinefileInputformat。
  • IsSplittable() :我也遇到过这种方法,其中 IsSplittable 在 mapreduce 程序的 setup 方法中被覆盖。

  • 现在应该在什么时候使用哪个或者什么是这种情况的最佳实践

    最佳答案

    CombinefileInput 格式:当您有大量小文件时,这很有用,在这种情况下,如果我们不使用 CombineFileInput 格式,那么即使对于非常小的文件,每个文件都将对应一个拆分,这意味着一个映射器将在那里对于每个小文件,都会运行很多映射器,并且会占用集群的不必要资源。

    Is Splittable :在这种情况下,如果您有大文件,它不会分成多个拆分,它将转到一个映射器,但不会有任何并行性,但这将解决将一个大文件发送到一个映射器的目的。

    如果您想在这种情况下发送一个完整的文件一条记录,您将必须自定义您自己的记录阅读器,默认情况下,它会在您的文件中检测到“\n”时打破一条记录,所以如果您想发送完整的文件一条记录,您将不得不通过基于字节总数而不是\n 编写逻辑来覆盖上述功能。

    关于hadoop - 一个完整的单个文件作为映射器的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38864811/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com