一:准備工作
1.新建class類
2.開啟HDFS服務
3.將配置文件拷貝進resources路徑
方便了Configuration的讀取配置。
二:讀出HDFS文件系統中的文件到控制台
4.讀出在路徑中的文件,顯示在控制台上
5.分別解析,獲取文件系統(兩種方式)
(方式一)
(方式二)
這種方式不需要復制配置文件進resources,但是這種被寫死了。
6.分別解析,寫入流
7.優化readFile
三:把文件上傳到HDFS上,即為WriteFile
注意點:fileName="user/beifeng/wc.input",加上wc.input
四:完整源代碼
1 package com.senior.hdfs; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.IOException; 6 7 import org.apache.hadoop.conf.Configuration; 8 import org.apache.hadoop.fs.FSDataInputStream; 9 import org.apache.hadoop.fs.FSDataOutputStream; 10 import org.apache.hadoop.fs.FileSystem; 11 import org.apache.hadoop.fs.Path; 12 import org.apache.hadoop.io.IOUtils; 13 14 public class HDFSApp { 15 16 public static FileSystem getFileSystem() throws Exception{ 17 Configuration configuration=new Configuration(); 18 FileSystem fileSystem=FileSystem.get(configuration); 19 return fileSystem; 20 } 21 //read 22 public static void read() throws Exception{ 23 FileSystem fileSystem=getFileSystem(); 24 String fileName="/user/beifeng/mapreduce/wordcount/input/wc.input"; 25 Path path=new Path(fileName); 26 FSDataInputStream inStream=fileSystem.open(path); 27 try{ 28 IOUtils.copyBytes(inStream, System.out, 4096, false); 29 }catch(Exception e){ 30 e.printStackTrace(); 31 } 32 33 } 34 //write 35 public static void write() throws Exception{ 36 FileSystem fileSystem=getFileSystem(); 37 //output fileName 38 String outputFileName="/opt/datas/wc.input"; 39 //input fileName 40 String inputFileNmae="/user/beifeng/mapreduce/wordcount/input2/wc.input"; 41 Path path=new Path(inputFileNmae); 42 FSDataOutputStream outStream=fileSystem.create(path); 43 FileInputStream inStream=new FileInputStream(new File(outputFileName)); 44 try{ 45 IOUtils.copyBytes(inStream, outStream, 4096, false); 46 }catch(Exception e){ 47 e.printStackTrace(); 48 }finally{ 49 IOUtils.closeStream(inStream); 50 IOUtils.closeStream(outStream); 51 } 52 53 } 54 public static void main(String[] args) throws Exception { 55 // read(); 56 write(); 57 58 } 59 60 }