作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我想从 hadoop 系统读取文件,我可以使用下面的代码做到这一点
String uri = theFilename;
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(URI.create(uri), conf);
InputStream in = null;
try {
in = fs.open(new Path(uri));
IOUtils.copyBytes(in, System.out, 4096, false);
} finally {
IOUtils.closeStream(in);
}
要运行这个文件,我必须运行 hadoop jar myjar.jar com.mycompany.cloud.CatFile/filepathin_hadoop这样可行。但是我怎样才能从其他程序做同样的事情,我的意思是不使用 hadoop jar 命令。
最佳答案
您可以将您的 core-site.xml 添加到该配置对象,以便它知道您的 HDFS 实例的 URI。此方法需要设置 HADOOP_HOME。
Configuration conf = new Configuration();
Path coreSitePath = new Path(System.getenv("HADOOP_HOME"), "conf/core-site.xml");
conf.addResource(coreSitePath);
FileSystem hdfs = FileSystem.get(conf);
// rest of code the same
现在,无需使用 hadoop jar
,您就可以打开与 HDFS 实例的连接。
编辑:必须使用 conf.addResource(Path)。如果您使用 String arg,则在类路径中查找该文件名。
关于hadoop - 如何在没有命令行的情况下使用 Java 从 Hadoop 读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9565599/
我是一名优秀的程序员,十分优秀!