hdfs讀取某一檔案具體內容的java程式碼
阿新 • • 發佈:2018-11-15
由於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); } } }