1. 程式人生 > >常用HDFS操作

常用HDFS操作

  • 向HDFS中上傳任意文字檔案,如果指定的檔案在HDFS中已經存在,由使用者指定是追加到原有檔案末尾還是覆蓋原有的檔案; 在這裡插入圖片描述
//假設  /user/hadoop/input路徑已存在 如沒存在 在命令列輸入 hadoop fs -mkdir -p /user/hadoop/input
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://localhost:9000");
String localFileName = "/home/hadoop/myfile.txt";
String remoteFileName = "/user/hadoop/input/myfile.txt";
Path localFilePath = new Path(localFileName);
Path remoteFilePath = new Path(remoteFileName);
FileSystem fs = FileSystem.get(conf);
		
if(!fs.exists(remoteFilePath)) {   ////遠端檔案不存在
		System.out.println("檔案未在遠端伺服器存在");
		fs.copyFromLocalFile(localFilePath, remoteFilePath);
		System.out.println("檔案已上傳到伺服器");
}else {   //遠端檔案已存在
		System.out.println("檔案已在遠端伺服器存在,請選擇下一步動作:1 覆蓋 ;2  新增到檔案末尾 ");
		int choice = 0;
		Scanner input  = new Scanner(System.in);
		choice = input.nextInt();
		switch(choice) {
		case 1:fs.copyFromLocalFile(true, false, localFilePath,remoteFilePath);
					System.out.println("檔案已成功進行覆蓋");break;
		case 2:FSDataOutputStream out = fs.append(remoteFilePath);
			   FileInputStream in = new FileInputStream(localFileName); //位元組流
				byte buff[] = new byte[1024];
				int read = -1;
				while((read =in.read(buff))>0) {  //in.read()返回讀取資料的長度
					out.write(buff, 0, read);
				}
				out.close();
				in.close();
				System.out.println("內容已新增到檔案末尾");break;
			default:System.out.println("未採取任何動作");break;
			}
		}
  • 從HDFS中下載指定檔案,如果本地檔案與要下載的檔名稱相同,則自動對下載的檔案重新命名; 在這裡插入圖片描述 在這裡插入圖片描述

  • 將HDFS中指定檔案的內容輸出到終端中; 這個命令特別簡單:hadoop fs -cat /user/hadoop/input/myfile.txt 在這裡插入圖片描述

  • 顯示HDFS中指定的檔案的讀寫許可權、大小、建立時間、路徑等資訊; 這個要求用shell實現也特別簡單:hadoop fs -ls /user/hadoop/input/myfile.txt 在這裡插入圖片描述

  • 給定HDFS中某一個目錄,輸出該目錄下的所有檔案的讀寫許可權、大小、建立時間、路徑等資訊,如果該檔案是目錄,則遞迴輸出該目錄下所有檔案相關資訊; 這個問題與上一個問題的不同之處在於目錄裡有目錄:hadoop fs -ls -R -h /user/hadoop/input/ 在這裡插入圖片描述

  • 提供一個HDFS內的檔案的路徑,對該檔案進行建立和刪除操作。如果檔案所在目錄不存在,則自動建立目錄; 在這裡插入圖片描述

在這裡插入圖片描述

  • 提供一個HDFS的目錄的路徑,對該目錄進行建立和刪除操作。建立目錄時,如果目錄檔案所在目錄不存在則自動建立相應目錄;刪除目錄時,由使用者指定當該目錄不為空時是否還刪除該目錄; shell:在這裡插入圖片描述 在這裡插入圖片描述

  • 向HDFS中指定的檔案追加內容,由使用者指定內容追加到原有檔案的開頭或結尾; 在這裡插入圖片描述 在這裡插入圖片描述

  • 刪除HDFS中指定的檔案; shell命令:hadoo[ fs -rm /user/hadoop/input/myfile.txt 在這裡插入圖片描述

  • 在HDFS中,將檔案從源路徑移動到目的路徑。 shell:hadoop fs -mv /user/hadoop/input/myfile.txt /user/hadoop/myfile.txt 在這裡插入圖片描述