第二种方式读取并显示HDFS中的内容
1.讀取HDFS内容的java客戶端代碼:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 }
2.將上述代碼打成har包傳輸到linux中運行,結果如下。
總結:
访问hdfs的两种方式各有不同:首先利用Java.net.URL对象打开数据流。第二种方法是利用FileSystem方法的get方法完成配置,利用IOUtils的copyBytes方法读取数据。
博客地址:http://www.cnblogs.com/jackchen-Net/
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步