Java Spark-如何使用给定权限写入文件

Java Spark-如何使用给定权限写入文件,java,file,apache-spark,hadoop,Java,File,Apache Spark,Hadoop,我试着用下面的方法从spark编写一些750权限的文件 我更新了代码中的fs.permissions.umask模式 jsc.hadoopConfiguration().set("fs.permissions.umask-mode", "022"); FileSystem.get(path, conf).setPermission(...) 它已成功更新默认umask 然后我尝试在磁盘上写入一些RDD,但文件权限与我应用的掩码不一致。这些文件没有预期的权限 代码示例: public clas

我试着用下面的方法从spark编写一些750权限的文件 我更新了代码中的
fs.permissions.umask模式

jsc.hadoopConfiguration().set("fs.permissions.umask-mode", "022");
FileSystem.get(path, conf).setPermission(...)
它已成功更新默认umask

然后我尝试在磁盘上写入一些RDD,但文件权限与我应用的掩码不一致。这些文件没有预期的权限

代码示例:

public class Bla {
    public static void main(String[] args) throws Exception {
    SparkConf sConf = new SparkConf().setAppName("test hadoop config ");
    JavaSparkContext jsc = new JavaSparkContext(sConf);
    JavaRDD<String> stringJavaRDD = jsc.textFile("/path/a.txt");
    stringJavaRDD.saveAsTextFile("/path/def_umask");
    System.out.println("fs.permissions.umask-mode " +
            jsc.hadoopConfiguration().get("fs.permissions.umask-mode"));
    jsc.hadoopConfiguration().set("fs.permissions.umask-mode", "022");
    System.out.println("after mod -- fs.permissions.umask-mode " +
            jsc.hadoopConfiguration().get("fs.permissions.umask-mode"));
    // < this succeed
    stringJavaRDD.saveAsTextFile("/path/updated_umask");
    // < files has the same permission as before the umask change :(

    jsc.stop();
}
公共类Bla{
公共静态void main(字符串[]args)引发异常{
SparkConf sConf=new SparkConf().setAppName(“测试hadoop配置”);
JavaSparkContext jsc=新的JavaSparkContext(sConf);
JavaRDD stringJavaRDD=jsc.textFile(“/path/a.txt”);
stringJavaRDD.saveAsTextFile(“/path/def_umask”);
System.out.println(“fs.permissions.umask-mode”+
jsc.hadoopConfiguration().get(“fs.permissions.umask mode”);
jsc.hadoopConfiguration().set(“fs.permissions.umask mode”,“022”);
System.out.println(“在mod--fs.permissions.umask-mode之后”+
jsc.hadoopConfiguration().get(“fs.permissions.umask mode”);
//<这成功了吗
stringJavaRDD.saveAsTextFile(“/path/updated_umask”);
//<文件具有与umask更改前相同的权限:(
jsc.stop();
}
我错过了什么?我该怎么做?
Spark 1.6.3

事实上,我从另一个来源得到了答案

--conf spark.hadoop.fs.permissions.umask-mode=022
此设置正在协调提交作业中的权限(所有写入操作都将具有此权限)。 我测试了这个,效果很好

可以在代码中设置给定路径的权限

jsc.hadoopConfiguration().set("fs.permissions.umask-mode", "022");
FileSystem.get(path, conf).setPermission(...)

事实上,我从另一个来源得到了答案

--conf spark.hadoop.fs.permissions.umask-mode=022
此设置正在协调提交作业中的权限(所有写入操作都将具有此权限)。 我测试了这个,效果很好

可以在代码中设置给定路径的权限

jsc.hadoopConfiguration().set("fs.permissions.umask-mode", "022");
FileSystem.get(path, conf).setPermission(...)

当你说“与以前相同的权限”时,你是在说文件`updated_mask`还是`a.txt`?与我第一次写出文件时拥有的权限相同(stringJavaRDD.saveAsTextFile(“/path/def_umask”);我不好,我想这部分文档可能会解释它:“创建文件和目录时使用的umask”。因此,只有在创建时才应用定义的umask。当您说“与以前相同的权限”时,您是指文件“updated_mask”还是“a.txt”?与我第一次写入文件时拥有的权限相同(stringJavaRDD.saveAsTextFile(“/path/def_umask”))我的错误,我想这部分文档可能会解释它:“创建文件和目录时使用的umask”。因此,仅在创建时应用定义的umask