Моя карта в настоящее время неэффективна при парсинге одного определенного набора файлов (в общей сложности 2 ТБ). Я хотел бы изменить размер блока файлов в DFS Hadoop (с 64 МБ до 128 МБ). Я не могу найти, как сделать это в документации только для одного набора файлов а не всего кластера.
То, которые управляют, изменяет размер блока, когда я загружаю? (Такие как копирование от локального до DFS.)
Я меняю свой ответ! Вам просто нужно правильно установить параметр конфигурации fs.local.block.size
при использовании командной строки.
hadoop fs -D fs.local.block.size=134217728 -put local_name remote_location
Исходный ответ
Вы можете программно указать размер блока при создании файла с помощью Hadoop API. К сожалению, вы не можете сделать это в командной строке с помощью команды hadoop fs -put
. Чтобы делать то, что вы хотите, вам придется написать свой собственный код для копирования локального файла в удаленное место; это несложно, просто откройте FileInputStream
для локального файла, создайте удаленный OutputStream
с помощью FileSystem.create
, а затем используйте что-то вроде IOUtils. copy
из Apache Commons IO для копирования между двумя потоками.