• 第二种方式读取并显示HDFS中的内容


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

    博客地址:http://www.cnblogs.com/jackchen-Net/
  • 相关阅读:
    发个小程序希望有人需要(操作摄像头)
    (转)Qt中translate、tr关系 与中文问题
    VS2008代码自动对齐
    (转)Qt国际化(源码含中文时)的点滴分析
    (转)Bibtex使用方法
    (转)new,operate new和placement new
    (转)C++中的虚函数表
    (转)QString 与中文问题
    (转)static_cast, dynamic_cast, const_cast探讨
    试试
  • 原文地址:https://www.cnblogs.com/jackchen-Net/p/6266546.html
Copyright © 2020-2023  润新知