Есть ли эквивалент `pwd` в hdfs?
Я пытался сделать hdfs dfs -pwd
, но эта команда не существует.
Поэтому в настоящее время я прибегаю к выполнению hdfs dfs -ls ..
, а затем hdfs dfs -ls ../..
.
Я также просмотрел список команд для hdfs dfs
, но не видел ничего перспективного.
Есть ли более прямой способ найти абсолютный путь?
Ответы
Ответ 1
hdfs dfs -pwd
не существует, поскольку в HDFS отсутствует концепция "рабочего каталога" при запуске команд из командной строки.
Вы не можете выполнить hdfs dfs -cd
в оболочке HDFS, а затем выполнить команды оттуда, поскольку и оболочки HDFS, и команды hdfs dfs -cd
тоже не существует, что делает идею создания рабочего каталога избыточной.
Ваш домашний каталог всегда является префиксом пути, если он не начинается с /
.
Ответ 2
Нет команды -cd
, поэтому, я думаю, вы ожидаете, что -pwd
вернет домашний каталог.
В соответствии с этим связанным вопросом: Домашний каталог HDFS домашний каталог hdfs всегда /user/<ShortUserName>
(он жестко закодирован в источнике).
Ответ 3
Если вы хотите увидеть абсолютный путь в домашнем каталоге, вы можете создать пустой каталог и удалить его, информация может показать вам абсолютный путь.
[[email protected] ~]$ hadoop fs -mkdir t1
[[email protected] ~]$ hadoop fs -rm -r t1
17/02/14 10:00:46 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 1 minutes, Emptier interval = 0 minutes.
Moved: 'hdfs://nameservice1/user/test/t1' to trash at: hdfs://nameservice1/user/test/.Trash/Current
'hdfs://nameservice1/user/test/t1' - это абсолютный путь к каталогу t1
Ответ 4
Нет такой PWD, совместимости с CD в hadoop как unix/linux.
Возможные команды Hadoop:
hadoop fs
-appendToFile
-cat
-checksum
-chgrp
-chmod
-chown
-copyFromLocal
-copyToLocal
-count
-cp
-createSnapshot
-deleteSnapshot
-df
-du
-expunge
-get
-getfacl
-getfattr
-getmerge
-help
-ls
-mkdir
-moveFromLocal
-moveToLocal
-mv
-put
-renameSnapshot
-rm
-rmdir
-setfacl
-setfattr
-setrep
-stat
-tail
-test
-text
-touchz
-usage
Ответ 5
В утилите оболочки файловой системы hdfs dfs
нет эквивалента команде pwd
, но здесь есть обходной путь, использующий mkdir
и find
:
$ hdfs dfs -mkdir xYz
$ hdfs dfs -find / -name "xYz"
(где "xYz" - это неиспользуемое имя файла)
В одной команде:
$ echo $(dirname $(hdfs dfs -rm -R xYz>/dev/null 2>&1;hdfs dfs -mkdir xYz&&hdfs dfs -find / -name "xYz"))
Ответ 6
Здесь есть функция hdfs.pwd(), но вы, к сожалению, не можете использовать ее из командной строки. Руководство пользователя HDFS