1.Java讀取hdfs文件內容java
1.1.在建立 /root/Downloads/ 目錄下建立hello文件,並寫入內容linux
1.2.把hello文件從linux上傳到hdfs中apache
1.3 eclipse中建立java項目並導入jar包(jar包來自hadoop)eclipse
1.4 輸入以下代碼,並執行oop
public class TestHDFSRead { public static final String HDFS_PATH="hdfs://192.168.80.100:9000/hadooptest/hello"; public static void main(String[] args) throws Exception { // 將hdfs 格式的url 轉換成系統可以識別的 URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory()); final URL url = new URL(HDFS_PATH); final InputStream in = url.openStream(); //copyBytes(in, out, buffSize, close) //四個參數分別爲輸入流,輸出流,緩衝區大小,是否關閉流 IOUtils.copyBytes(in, System.out, 1024, true); } }
2.java建立HDFS文件夾url
import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import java.net.URI; import org.apache.hadoop.conf.Configuration; public class TestHDFS { public static final String HDFS_PATH="hdfs://192.168.80.100:9000"; //前面有斜線表示從根目錄開始,沒有斜線從/usr/root開始 public static final String HadoopTestPath="/hadooptest2"; public static void main(String[] args) throws Exception { final FileSystem fileSystem = FileSystem.get(new URI(HDFS_PATH), new Configuration()); //建立文件夾 fileSystem.mkdirs(new Path(HadoopTestPath)); } }
執行後,指令查詢是否有該文件夾:.net
3.java上傳文件到HDFScode
import java.io.FileInputStream; import java.net.URI; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IOUtils; public class TestHDFS { public static final String HDFS_PATH="hdfs://192.168.80.100:9000"; //前面有斜線表示從根目錄開始,沒有斜線從/usr/root開始 public static final String HadoopTestPath="/hadooptest2"; public static final String HadoopFilePath="/hadooptest2/hello123";//hello123爲須要寫入的文件 public static void main(String[] args) throws Exception { final FileSystem fileSystem = FileSystem.get(new URI(HDFS_PATH), new Configuration()); //建立文件夾 //fileSystem.mkdirs(new Path(HadoopTestPath)); //上傳文件 final FSDataOutputStream out = fileSystem.create(new Path(HadoopFilePath)); final FileInputStream in = new FileInputStream("d:/hello2.txt");//hello2.txt文件寫入hello123 IOUtils.copyBytes(in,out, 1024, true); } }
4.java下載HDFS文件遞歸
public class TestHDFS { public static final String HDFS_PATH="hdfs://192.168.80.100:9000"; //前面有斜線表示從根目錄開始,沒有斜線從/usr/root開始 public static final String HadoopTestPath="/hadooptest2"; public static final String HadoopFilePath="/hadooptest2/hello123";//hello123爲須要寫入的文件 public static void main(String[] args) throws Exception { final FileSystem fileSystem = FileSystem.get(new URI(HDFS_PATH), new Configuration()); //建立文件夾 //fileSystem.mkdirs(new Path(HadoopTestPath)); //上傳文件 //final FSDataOutputStream out = fileSystem.create(new Path(HadoopFilePath)); //final FileInputStream in = new FileInputStream("d:/hello2.txt");//hello2.txt文件寫入hello123 //IOUtils.copyBytes(in,out, 1024, true); //下載文件 final FSDataInputStream in = fileSystem.open(new Path(HadoopFilePath)); IOUtils.copyBytes(in,System.out, 1024, true); } }
5.java刪除HDFS文件ip
public class TestHDFS { public static final String HDFS_PATH="hdfs://192.168.80.100:9000"; //前面有斜線表示從根目錄開始,沒有斜線從/usr/root開始 public static final String HadoopTestPath="/hadooptest2"; public static final String HadoopFilePath="/hadooptest2/hello123";//hello123爲須要寫入的文件 public static void main(String[] args) throws Exception { final FileSystem fileSystem = FileSystem.get(new URI(HDFS_PATH), new Configuration()); //建立文件夾 //fileSystem.mkdirs(new Path(HadoopTestPath)); //上傳文件 //final FSDataOutputStream out = fileSystem.create(new Path(HadoopFilePath)); //final FileInputStream in = new FileInputStream("d:/hello2.txt");//hello2.txt文件寫入hello123 //IOUtils.copyBytes(in,out, 1024, true); //下載文件 //final FSDataInputStream in = fileSystem.open(new Path(HadoopFilePath)); //IOUtils.copyBytes(in,System.out, 1024, true); //刪除文件(夾),兩個參數 第一個爲刪除路徑,第二個爲遞歸刪除 fileSystem.delete(new Path(HadoopFilePath),true); } }
下圖第一個紅框爲刪除前,第二個紅框爲刪除後: