我尝试使用以下方式以750权限从spark写入一些文件
我更新了代码中的fs.permissions.umask-mode
jsc.hadoopConfiguration().set("fs.permissions.umask-mode", "022");
它已成功更新默认的umask。
我尝试在磁盘上写一些RDD,但是文件权限没有与我应用的掩码对齐。这些文件没有预期的750权限。
代码示例:
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();
}
我在这里想念什么?我该怎么办? Spark 1.6.3
答案 0 :(得分:3)
实际上我从另一个来源得到答案。
--conf spark.hadoop.fs.permissions.umask-mode=022
此设置是协调提交作业的权限(所有写入都具有此权限)。 我测试了这个并且工作正常。
OR
可以在代码中为给定路径设置权限
FileSystem.get(path, conf).setPermission(...)