HDFS API 对HDFS操作

hadoop HDFS 提供了丰富的API对HDFS文件系统进行操作。

hadoop 提供了一个org.apache.hadoop.fs.FileSystem 类,该类负责对HDFS进行操作


公共代码:在类中定义一下属性或常量

        public static final  String HADOOP_PATH="hdfs://hadoop:9000";
	public static final String DIR_PATH="/love";
	public static final  String FILE_PATH="/love/you.txt";
	static FileSystem fileSystem=null;
	public static final void main(String[] args)throws Exception{
		fileSystem=FileSystem.get(new URI(HADOOP_PATH),new Configuration());
		//上传文件夹(创建文件夹)
		//上传文件
		//下载文件
		//删除文件或者文件夹
	}

在HDFS上创建文件夹:

public static void mkdir(FileSystem fileSystem) throws IOException {
		fileSystem.mkdirs(new Path(DIR_PATH));
	}

 Note: FileSystem.mkdirs(Path) 在HDFS上创建文件夹 返回一个boolean值

在HDFS上上传文件:

public static void upload(FileSystem fileSystem) throws IOException,
			FileNotFoundException {
		final OutputStream out=fileSystem.create(new Path(FILE_PATH));
		final FileInputStream in=new FileInputStream("you.txt");
		IOUtils.copyBytes(in, out, 1024, true);
	}

 Note: FileSystem.create(Path path) 在HDFS上创建一个文件,然后返回这个文件的输出流,把我们想上传的文件与HDFS上文件的输出流对接达到上传的文件的效果

把HDFS上的文件下载到本地:

public static void downLoadData(FileSystem fileSystem) throws IOException {
		FSDataInputStream inFile = fileSystem.open(new Path(FILE_PATH));
		IOUtils.copyBytes(inFile, System.out, 1024, true);
	}

 Note:FileSystem.open(Path path);打开HDFS上的一个文件,然后得到这个文件的输入流,拿到这个文件的输入流了之后,就可以做下载操作了

把HDFS上的文件或者目录删除:

public static void deleteFileOrDrictory(FileSystem fileSystem)
			throws IOException {
		fileSystem.delete(new Path(FILE_PATH), true);
	}

 Note: FileSystem.delete(Path path,boolean recursive) 该方法是对HDFS上得文件或目录做删除操作,

一下是该方法的一些注释:

  /** Delete a file.
   *
   * @param f the path to delete.
   * @param recursive if path is a directory and set to 
   * true, the directory is deleted else throws an exception. In
   * case of a file the recursive can be set to either true or false. 
   * @return  true if delete is successful else false. 
   * @throws IOException
   */

  大致的意思是说,如果删除文件,那么第二个boolean参数可以是true也可以是false,如果删除的是目录的时候必须为true,删除不成功报IOException




你可能感兴趣的:(HDFS API 对HDFS操作)