Я недавно изучал Hadoop и HDFS. Когда вы загружаете файл в HDFS, он обычно разделяет файл на куски по 64 МБ и распределяет их по всему кластеру. За исключением того, что он не может сделать это с файлами gzip'd, потому что файл gzip'd не может быть разделен. Я полностью понимаю, почему это так (мне не нужно, чтобы кто-нибудь объяснял, почему файл gzip не может быть разделен). Но почему HDFS не может взять простой текстовый файл в качестве входных данных и разделить его, как обычно, а затем сжать каждый раздел с помощью gzip отдельно? При обращении к любому разделению он просто распаковывается на лету.
В моем сценарии каждый сплит сжимается полностью независимо. Между разделениями нет никакой зависимости, поэтому вам не нужен весь исходный файл для распаковки любого из разделений. Этот подход использует этот патч: https://issues.apache.org/jira/browse/HADOOP-7076, обратите внимание, что это , а не , что я хотел бы.
Это кажется довольно простым ... что мне не хватает? Почему это не могло быть сделано? Или, если это можно сделать, почему разработчики Hadoop не смотрели вниз по этому пути? Это кажется странным, учитывая, сколько обсуждений я нашел относительно людей, которые хотят разделить файлы gzip'd в HDFS.