Я не знаю, и не нашел способа динамически изменить размер блока одного файла с помощью API.Существует несколько способов изменить размер блока файла, хранящегося в HDFS.
Помимо использования функции create
и указания другого размера блока, они сосредоточены вокруг изменения размера блока по умолчанию, в котором хранится HDFS..
Два основных способа использования измененного размера блока по умолчанию:
- Локальное копирование файла;Удалить файл HDFS;Загрузить файл
- Скопировать файл в новое место / имя на HDFS;Удалить исходный файл;Переместить / переименовать файл в исходное местоположение / имя
Та же идея может быть реализована с помощью API.Скопируйте файл на локальный диск, удалите файл HDFS, затем используйте API для создания файла, используя локальную копию с желаемым размером блока.
Я могу предположить, почему это еще не было реализовано;Хотя это и упростит это, но, вероятно, не нужно слишком часто.Чтобы реализовать это, файл должен быть «повторно собран», а затем повторно заблокирован в соответствии с новым размером.В очень больших файлах это может привести к насыщению сети, поскольку все данные могут потенциально перемещаться по сети несколько раз.
Я не знаю достаточно деталей hadoop, чтобы точно знать, какие недостатки могут существовать, пытаясь реализовать эту функциональность вAPI, но я вижу несколько спорных моментов, которые могут затормозить реализацию, пока удовлетворяются большие потребности.
hth