1. 程式人生 > >訪問hdfs裏的文件

訪問hdfs裏的文件

baidu oid new mon puts factory test aid -c

準備工作:

  給hdfs裏上傳一份用於測試的文件 

  [root@master ~]# cat hello.txt
  hello 1
  hello 2
  hello 3
  hello 4

  [root@master ~]# hadoop fs -put ./hello.txt /
  [root@master ~]# hadoop fs -ls /
  Found 1 items
  -rw-r--r-- 2 root supergroup 32 2018-11-12 22:42 /hello.txt

  java依賴的庫:

  1.common
    hadoop-2.7.3\share\hadoop\common\hadoop-common-2.7.3.jar
  2.common依賴的jar
    hadoop-2.7.3\share\hadoop\common\lib下的所有
  3.hdf
    hadoop-2.7.3\share\hadoop\hdfs\hadoop-hdfs-2.7.3.jar

代碼:

  利用JDK的URL類

import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
import java.io.InputStream;
import java.net.URL;

public class TestHDFS {
    public static void main(String[] args) throws Exception{
//        URL url = new URL("http://www.baidu.com");
        
//URL這個類是Java的,他默認只認識HTTP協議,這裏需要設置一下,讓他認識HDFS協議 URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory()); //這裏的地址和端口,相當與hdfs裏的根目錄, 然後在拼上要訪問的文件在hdfs裏的路徑 URL url = new URL("hdfs://192.168.0.104:9000/hello.txt"); InputStream in = url.openStream(); IOUtils.copyBytes(in, System.out,
4096, true); } }

  

    

訪問hdfs裏的文件