spark saveAsTable权限

时间:2017-06-08 20:19:32

标签: apache-spark

当spark程序使用DataFrame.saveAsTable写入表时,它会以作业运行的用户身份创建HDFS文件权限。这是预期的,但是,我希望能够将写权限设置为更大的组,以便可以使用诸如" DROP TABLE"之类的命令手动操作表。或由其他用户更新。

如何在表写入spark期间设置组HDFS权限?

1 个答案:

答案 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"