web-dev-qa-db-ja.com

hdfsに「pwd」に相当するものはありますか?

hdfs dfs -pwdを実行しようとしましたが、そのコマンドは存在しません。そのため、現在、hdfs dfs -ls ..に続いてhdfs dfs -ls ../..を実行しています。

hdfs dfsのコマンドリストも調べましたが、期待できるものは見ませんでした。

絶対パスを見つけるより直接的な方法はありますか?

21
merlin2011

コマンドラインからコマンドを実行する場合、HDFSには「作業ディレクトリ」の概念がないため、「hdfs dfs -pwd」は存在しません。

HDFSシェルと「hdfs dfs -cd」コマンドの両方が存在しないため、HDFSシェルで「hdfs dfs -cd」を実行してからそこからコマンドを実行することはできません。

ホームディレクトリは、「/」で始まらない限り、常にパスのプレフィックスです。

20

-cdコマンドはないので、-pwdがホームディレクトリを返すことを期待していると思います。

この関連する質問: HDFS Home Directory によると、hdfsのホームディレクトリは常に/user/<ShortUserName>です(ソースにハードコーディングされています)。

14
jrouquie

ホームディレクトリの絶対パスを表示する場合は、空のディレクトリを作成して削除します。情報に絶対パスが表示されます。

[test@test ~]$ hadoop fs -mkdir t1                                            
[test@test ~]$ 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ディレクトリの絶対パスです

12
sleepy jerry

UNIX/Linuxのようなhadoopには、そのようなPWD、CDの移植性はありません。

可能な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
6

ファイルシステムシェルユーティリティhdfs dfsにはpwdコマンドに相当するものはありませんが、ここではmkdirfindを使用した回避策があります。 :

$ hdfs dfs -mkdir xYz
$ hdfs dfs -find / -name "xYz"

(「xYz」は未使用のファイル名です)

1つのコマンドで:

$ echo $(dirname $(hdfs dfs -rm -R xYz>/dev/null 2>&1;hdfs dfs -mkdir xYz&&hdfs dfs -find / -name "xYz"))
5
user2314737

Hdfs.pwd()関数がありますが、残念ながらコマンドラインから使用することはできません。 HDFSユーザーガイド

1