我很高兴连接到hdfs并列出我的主目录:
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://hadoop:8020");
conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");
FileSystem fs = FileSystem.get(conf);
RemoteIterator<LocatedFileStatus> ri = fs.listFiles(fs.getHomeDirectory(), false);
while (ri.hasNext()) {
LocatedFileStatus lfs = ri.next();
log.debug(lfs.getPath().toString());
}
fs.close();
我现在想做的是作为一个特定的用户(而不是whois用户)连接。有人知道你如何指定你连接的用户吗?
2条答案
按热度按时间sg3maiej1#
如果我的回答正确,那么您只需要获取用户的主目录(如果指定),而不是whois用户。
在配置文件中,将homedir属性设置为user/${user.name}。确保您有一个名为user.name的系统属性
我的案子就是这样。
我希望这是你想做的,如果不添加评论。
h22fl7wq2#
我一看完这件事
UserGroupInformation
类和PrivilegedAction
或者PrivilegedExceptionAction
. 下面是连接到远程hdfs的示例代码,例如“不同的用户”(在本例中为“hbase”)。希望这能解决你的任务。如果您需要完整的身份验证方案,您需要改进用户处理。但是对于简单的身份验证方案(实际上没有身份验证),它工作得很好。