1. 程式人生 > >hdfs讀取某一檔案具體內容的java程式碼

hdfs讀取某一檔案具體內容的java程式碼

由於mapreduce實驗總要檢視output/part-r-00000

所以寫個程式

package Utils;


import java.net.URI;


import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.log4j.Logger;


/**
 * 讀取hdfs上指定檔案中的內容
 * @company 源辰資訊
 * 
@author navy  */ public class FindHDFSText { private static Logger log = Logger.getLogger(FindHDFSText.class);// 建立日誌記錄器 public static void main(String[] args) { FileSystem fs = null; try { Configuration conf = new Configuration();// 載入配置檔案 conf.set("dfs.client.use.datanode.hostname", "true"); URI uri
= new URI("hdfs://**:9000/"); // 連線資源位置 fs = FileSystem.get(uri,conf,"hadoop"); // 建立檔案系統例項物件 Path p= new Path("output/part-r-00000"); // 預設是讀取/user/navy/下的指定檔案 System.out.println("要檢視的檔案路徑為:"+fs.getFileStatus(p).getPath()); FSDataInputStream fsin
= fs.open(fs.getFileStatus(p).getPath()); byte[] bs = new byte[1024 * 1024]; int len = 0; while((len = fsin.read(bs)) != -1){ System.out.print(new String(bs, 0, len)); } System.out.println(); fsin.close(); } catch (Exception e) { log.error("hdfs操作失敗!!!", e); } } }