前几天一直在搞HDFS文件的下载与上传,但是在集群内部可以,在集群外部却出现了错误,照说,HDFS的保密协议应该没那么高吧,不解中。
后来才发现自己网上找的代码,却并未理解其中奥妙。
在集群内实现HDFS的读取与上传,可以通过Configure类来取得集群内部信息,从而与HDFS取得联系。
而在Windows下,则是需要才用URL的方式才可以进行操作。下面贴上成功代码一剂,给自己以回忆和教训。
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
import org.apache.hadoop.io.IOUtils;
public class URLTest {
static {
URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
}
public static void main(String[] args) throws MalformedURLException, IOException {
InputStream in = null;
try {
in = new URL("hdfs://192.168.50.28:8020/user/root/jyl/streaminfo").openStream();
IOUtils.copyBytes(in, System.out, 4096, false);
} finally {
IOUtils.closeStream(in);
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)