2015-09-15 2 views
0

Я пытаюсь создать каталог в hdfs программно. Мне нужен каталог для записи для всех пользователей. Поэтому я стараюсь передать perissions в mkdirs так:Hadoop FileSystem.mkdirs (путь, разрешение) игнорирует разрешение

Path dir = new Path("/tmp/mkdir-test");  
fileSystem.mkdirs(dir, new FsPermission(FsAction.ALL, FsAction.ALL, FsAction.ALL)); 

однако, результат в том, что я получаю каталог с drwxr-xr-x разрешения. Это, кажется, не будет какой-то общий вопрос разрешения, потому что если я установить их явно в следующей строке:

// For some reason the initial permissions are ignored 
fileSystem.setPermission(dir, new FsPermission(FsAction.ALL, FsAction.ALL, FsAction.ALL)); 

каталог заканчивается должным образом с drwxrwxrwx, как предполагалось.

Почему разрешения переданы на адрес mkdirs не имеют почтения?

ответ

2

Несмотря на Javadoc фактического метода ничего не упоминая, есть статический метод FileSystem.mkdirs(FileSystem, Path, FsPermission) который обеспечивает некоторое объяснение:

Создать директорию с предоставленному разрешения. Разрешение каталога установлено как предоставленное разрешение, так как в setPermission, нет разрешения & ~ umask.

Получается, что стандарт mkdirs И имеет данное разрешение с umask.

Метод статической утилиты реализован в виде комбинации mkdirs и setPermission

Смежные вопросы