2017-05-30 6 views
1
、今私はbashの上follwoingコマンドやって何を私は基本的にやっているJavaコードを使用して(Hadoopのシェルコマンドを含む学位論文コマンド)いくつかのシェルコマンドを自動化され

「chmodの」Hadoopのパス

hadoop fs -mkdir path//tp//folder 
hadoop fs -chmod a+w path//to//folder 

すべてを

org.apache.hadoop.fs.FileSystem.mkdir(new Path("path//to//folder"),new FsPermission(FsAction.ALL, FsAction.ALL, FsAction.ALL)) 

残念ながらこの方法:

public void setPermission(Path p, FsPermission permission) throws IOException 
{ 
} 
01時に同じアクションを実行するためのJavaコードを使用しようとする今、細かい作業

(それぞれ:空)実装されていない私は、Javaコードを使用してパスをHadoopのための読み取り/書き込み権限を追加する方法のHadoop vで2.6.0〜2.8.0

私の質問?

+0

「mkdirs」の方法ではありませんか? –

+0

'FileSystem'が抽象的で、ここではHDFSのための実装は次のとおりです。 https://github.com/apache/hadoop/blob/trunk/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org /apache/hadoop/hdfs/DistributedFileSystem.java は、このメソッドを使用しようとしたことがありますか?エラーが出ましたか? – fi11er

答えて

1

まず第一に、あなたは、分析のクロスチェックの結果にしたいかもしれません。あなたはたとえばhereを見れば、ファイルシステムが実際に抽象クラスであることがわかります。だからの具体的なサブクラスが実際にある点でインスタンス化されるとの空のメソッドsetPermissions()をオーバーライドすると、私は驚いていません。いずれの場合においても

は、そこにシンプルですが、醜い回避策:ProcessBuilderを使用し、Javaの中から

hadoop fs -chmod a+w path//to//folder 

を実行します。書き留めてください:

// TODO: check with next version of hadoop if fs.FileSystem.setPermission() is now implemented 
+0

私はそれは難しいmkdirsがcricket_007まあ@ JavaDocの –

+0

ごとに、ファイルのアクセス権を設定していないコマンドと信じて見つけます。私はgrepcodeでいくつか検索しました...そして、あまりにも空のsetPermissions()メソッドしか見つかりませんでした。そして、私がチェックしたサブクラスは、 – GhostCat

+0

非常に奇妙な... https://github.com/apache/hadoop/blob/release-2.7.1/hadoop-common-project/hadoop-common/src/ ...どちらか上書きしませんでしたmain/java/org/apache/hadoop/fs/FileSystem.java#L2337。 '-chmod'フラグが実際にどのように動作しているのか私に不思議に思うのですが、 –

関連する問題