大数据基础考前复习(2)

通过Java程序对hdfs文件系统进行操作

1.创建文件夹
在这里插入图片描述

在这里插入图片描述


public class MkDir {

	/**
	 * @param args
	 * @throws Exception 
	 * 1.获取文件系统对象
	 *     1.1  获取配置信息  
	 *     1.2 获取hdfs(文件系统)路径
	 *     1.3 得到文件系统对象
	 *2.创建文件夹
	 *3.关闭文件系统
	 */
	public static void main(String[] args) throws Exception {
//		 * 1.获取文件系统对象

//		 *     1.1  获取配置信息  
		Configuration configuration = new Configuration();
//		 *     1.2 获取hdfs(文件系统)路径
		URI path = new URI("hdfs://192.168.56.100:9000");
//		 *     1.3 得到文件系统对象
		FileSystem fileSystem = FileSystem.get(path, configuration);
//			 *2.创建文件夹
		fileSystem.mkdirs(new Path("/park05"));
//			*3.关闭文件系统
		fileSystem.close();
	}

}

可以看到想要通过java程序操纵文件系统只需要获取文件系统通过这个文件系统对象我们就可以对hdfs进行operation操作

因此我们可以对获取文件系统对象这一步进行一个简单封装

public class FilesysUtil {
	//hdfs路径
	private static final String path="hdfs://192.168.56.100:9000";
	public static FileSystem getFileSys()
	{
		Configuration configuration = new Configuration();
		FileSystem fileSystem=null;
		try {
			fileSystem = FileSystem.get(new URI(path), configuration);
		} catch (IOException | URISyntaxException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return fileSystem;
	}

}

2.文件的拷贝(本地->>hdfs )分别有流的方式
在这里插入图片描述


import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;

import org.apache.commons.io.IOUtils;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;


/**
 * @author 
 * 
 * 通过流的方式实现文件的拷贝
 *
 */
public class Uploadtxt {

	public static void main(String[] args) throws Exception {
	     //1.获取文件系统
		FileSystem fileSys = FilesysUtil.getFileSys();
		//2.创建输出流
	    OutputStream fout = fileSys.create(new Path("/park05/a.txt"));
		//3.创建输入流
		FileInputStream fin = new FileInputStream("a.txt");
		//4.进行拷贝
		IOUtils.copy(fin, fout);
		//资源关闭
		fin.close();
		fout.close();
		fileSys.close();
	}

}

3.文件下载(hdfs–》本地)流的方式
在这里插入图片描述


import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import org.apache.commons.io.IOUtils;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class GetFiletxt {

	public static void main(String[] args) throws Exception {
		//1.获取文件系统
		FileSystem fileSys = FilesysUtil.getFileSys();
		//2.获取文件的输入流
		InputStream open = fileSys.open(new Path("/park05/a.txt"));
		//3.获取文件输出流
		OutputStream fout = new FileOutputStream("locala.txt");
		//4.流拷贝
		IOUtils.copy(open,fout);
		//关闭资源
		open.close();
		fout.close();
		fileSys.close();
	
	}

}

4.使用文件系统对象提供的方法进行一系列文件操作


import java.io.IOException;

import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class FilesysMdsuse {
	private FileSystem fileSys=null;
    public FilesysMdsuse() {
    	fileSys =FilesysUtil.getFileSys();
    }

	
	//hdfs 和 本地文件的  复制
	public void copyTest() throws Exception {
		  fileSys.copyFromLocalFile(new Path("src"), new Path("dst"));
		  fileSys.copyToLocalFile(new Path(""), new Path(""));
	}
	//文件的删除
	public void deletefile() throws IllegalArgumentException, IOException {
		fileSys.deleteOnExit(new Path(""));
	}
	//文件的重命名(文件移动)  hdfs系统
	public void renameFile() throws IllegalArgumentException, IOException {
		fileSys.rename(new Path(""), new Path(""));
	}
	//文件  hdfs-本地之间的move
	public void move() throws IllegalArgumentException, IOException
	{
		fileSys.moveFromLocalFile(new Path(""),new Path(""));
		fileSys.moveToLocalFile(new Path(""),new Path(""));
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值