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方法读取数据。

发布评论

分享到:

IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

Java代码操作HDFS(在/user/root/下面創建目錄)详解
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。