2017-06-08 7 views
0

、それはジョブが実行しているユーザとしてHDFSファイルのパーミッションを作成します。これは予想通り、しかし、私は、テーブルは、「DROP表」などのコマンドを使用して手動で操作したり、他のユーザーによって更新されてもよいように、より大きなグループに書き込み権限を設定できるようにしたいと考えています。私はスパークでのテーブル書き込み時にグループHDFSのパーミッションを設定するにはどうすればよいスパークsaveAsTable権限スパークプログラムはDataFrame.saveAsTableを使用してテーブルを書き込み

saveAsTableを実行中に許可を変更

答えて

0

することはできません。 hadoop-clientライブラリを使用して、以下に示すようにhdfsパス権限を変更することができます。

import org.apache.hadoop.fs.permission.FsPermission 
import org.apache.hadoop.fs.FileSystem 
import java.net.URI 

val uri = new URI("hdfs://hdfs-namenode:8080/target/path") 
val fileSystem = FileSystem.get(uri, new Configuration()) 
fileSystem.setPermission(new Path(uri), new FsPermission(777: Short)) 

hadoopクライアントパッケージは、sbtビルドファイルの下のコードを使用してプロジェクトに追加できます。

libraryDependencies += "org.apache.hadoop" % "hadoop-client" % "2.7.2" 
+0

ありがとう!何か別の方法がありますか?ハイブを使用してHDFSファイル書き込みに使用されるデフォルトのアクセス権を変更して、常に同じユーザーとして書き込みますか?スパークはhive.warehouse.subdir.inherit.permsとhive.server2.enable.doasの両方を無視しているようです。 –

関連する問題