使用java.net.URL对象从Hadoop文件系统读取文件
实现类似linux中cat命令的程序
文件名
HDFSCat.java
程序代码
import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
import org.apache.hadoop.io.IOUtils;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
public class HDFSCat {
public static void main(String[] args) {
InputStream in = null;
try {
in = new URL(args[0]).openStream();
IOUtils.copyBytes(in, System.out, 4096, false);
} catch (IOException e) {
e.printStackTrace();
} finally {
IOUtils.closeStream(in);
}
}
static {
URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
}
}
编译
javac HDFSCat
打包
jar -cvf test.jar HDFSCat.class
运行
hadoop jar test.jar HDFSCat hdfs://localhost:8020/user/katsura/URLInput.txt
说明
- 需要运行在配置hadoop的linux系统上
- 编译前,需要设置CLASSPATH 点击查看
- 运行命令中的
hdfs://localhost:8020
是在hadoop/etc/hadoop/core-site.xml
文件中fs.defaultFS
的value
值