当spark程序使用DataFrame.saveAsTable写入表时,它会以作业运行的用户身份创建HDFS文件权限。这是预期的,但是,我希望能够将写权限设置为更大的组,以便可以使用诸如" DROP TABLE"之类的命令手动操作表。或由其他用户更新。
如何在表写入spark期间设置组HDFS权限?
答案 0 :(得分:0)
无法在运行saveAsTable
时更改权限。您可以使用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))
可以使用sbt构建文件中的以下代码将hadoop客户端软件包添加到项目中。
libraryDependencies += "org.apache.hadoop" % "hadoop-client" % "2.7.2"