查看源码中,用户获取流程:先读取HADOOP_USER_NAME系统环境变量,然后是java环境变量,没有就从NTUserPrincipal里取。
可以配置HADOOP_USER_NAME环境变量,因为我是windows开发测试,所以个人解决方案:
(1)在代码前设置用户:System.setProperty("HADOOP_USER_NAME", "hdfs");
或者:
(2)
URI uri = new URI("hdfs://ip:8020");
FileSystem fileSystem = FileSystem.get(uri, configuration, "hdfs");