Hadoop學習--URL方法訪問HDFS數據--day04

import java.io.ByteArrayOutputStream;java

import java.io.InputStream;apache

import java.net.URL;數組


import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;ide

import org.apache.hadoop.io.IOUtils;工具

import org.junit.Test;oop


public class TestFileSystemURL {url

static {spa

URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());.net

}對象


/**

* 經過URL對象讀取HDFS文件數據

* @author Administrator

* 想要從HDFS中讀取數據,首先咱們考慮的是從WEBUI的那種方式去取出數據

* 1.定義一個URL對象,該URL對象封裝了該HDFS的URL地址信息

* 2.調用openStream()方法打開一個輸入流

* 3.經過IOUtils工具類把輸入流複製到字節數組輸出流中,而後打印輸出字節輸出流的信息

*/

@Test

public void readByURL() throws Exception {

// 配置須要讀取的URL地址的文件

String urlStr = "hdfs://hadoop01:9000/user/hadoop/data/hello.txt";

// 經過URL的帶string的構造方法來建立URL對象

URL url = new URL(urlStr);

// 調用URL對象的openStream()方法獲得一個inputstream對象

InputStream is = url.openStream();

//定義一個字符數組

// byte[] bys = new byte[1024];

// int len =0;

//有三部,讀取,賦值,判斷,一次讀取一個字符數組,返回值是讀取的字符數組的長度,若是已經到

//文件的末尾了,就返回-1

// while((len=is.read(bys))!=-1){

//輸出一個字符數組,準確的說是輸出字符數組的一部分,從0開始到讀取的長度結束,print後面不加

//ln

// System.out.print(new String(bys,0,len));

// }

// 建立字節數組輸出流對象

ByteArrayOutputStream baos = new ByteArrayOutputStream();

// hadoop提供的IOUtils方法來實現流的對拷

IOUtils.copyBytes(is, baos, 1024);

// 關閉流對象

IOUtils.closeStream(is);

System.out.println(new String(baos.toByteArray()));

   }

}

相關文章
相關標籤/搜索