1.讀取HDFS内容的java客戶端代碼:
1 package Hdfs;
2
3 import java.io.InputStream;
4 import java.net.URI;
5
6 import org.apache.hadoop.conf.Configuration;
7 import org.apache.hadoop.fs.FileSystem;
8 import org.apache.hadoop.fs.Path;
9 import org.apache.hadoop.io.IOUtils;
10 /**
11 * FileSystem类的实例是通过工厂方法,其中Configuration对象封装了HDFS客户端或者HDFS集群的配置
12 * 该方法通过给定的URI方案和权限确定使用的文件系统。得到FileSystem实例之后,调用open()函数
13 * 获得文件的输入流,open方法返回FSDataInputStream对象
14 * @param args
15 * @throws Exception
16 */
17 public class FilesystemCat {
18 public static void main(String[] args) throws Exception {
19 String url = "hdfs://neusoft-master:9000/user/root/test/demo1";
20 Configuration conf = new Configuration();
21 FileSystem fs = FileSystem.get(URI.create(url), conf);
22 InputStream in = null;
23 try {
24 in = fs.open(new Path(url));
25 IOUtils.copyBytes(in, System.out, 4096, false);
26 } catch (Exception e) {
27 IOUtils.closeStream(in);
28 }
29 }
30 }
FileSystem方式讀取HDFS内容
2.將上述代碼打成har包傳輸到linux中運行,結果如下。
總結:
访问hdfs的两种方式各有不同:首先利用Java.net.URL对象打开数据流。第二种方法是利用FileSystem方法的get方法完成配置,利用IOUtils的copyBytes方法读取数据。
转载于:https://www.cnblogs.com/jackchen-Net/p/6266546.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)