Hadoop(三)java操做HDFS

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);
	}
}

下圖第一個紅框爲刪除前,第二個紅框爲刪除後:

相關文章
相關標籤/搜索