代码实现HDFS数据上传和下载

<img src="https://img-blog.csdn.net/20150803145759823?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
<img src="https://img-blog.csdn.net/20150803145822627?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;
import java.net.URISyntaxException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.junit.Before;
import org.junit.Test;

/*
 1、通过代码来操作HDFS
 2、实现了下载、上传文件的功能
 */
public class HDFSDemo {	
	/*
	 1、通过代码来操作HDFS
	 2、实现了下载功能
	 */	
	public static void main(String[] args) throws IOException, URISyntaxException {
		//与master建立联系
		FileSystem fs =FileSystem.get(new URI("hdfs://master:9000"), new Configuration());
		//通过流方式读取HDFS中的文件,将文件读入到内存当中
		InputStream in  = fs.open(new Path("/user/guest/esri/xiaojson/xiao.json"));
		//输出路径
		OutputStream out = new FileOutputStream("D://xiao.json");
		//工具类将in中的内容copy到out中,大师级默认都是4096
		IOUtils.copyBytes(in, out, 4096, true);
	}
	/*
	 1、通过代码来操作HDFS
	 2、实现了下载功能,通过一句话实现下载
	 */	
	@Test
	public void testDownLoad() throws IllegalArgumentException, IOException{
		fs.copyToLocalFile(new Path("/user/guest/esri/xiaojson/xiao.json"), new Path("D://xiao1.json"));
	}
	
	FileSystem fs = null;
	@Before
	public void init() throws IOException, URISyntaxException, InterruptedException{
		//创建FileSystem的实现类 (工具类)与master建立联系
		fs =FileSystem.get(new URI("hdfs://master:9000"), new Configuration(),"guest");
	}
	/*
	 1、通过代码来操作HDFS
	 2、实现了上传功能
	 */	
	@Test
	public void testUpload() throws IOException{
		//读取本地文件系统的文件,返回输入流
		InputStream in = new FileInputStream("D://xiao123.json");
		//在HDFS上创建一个文件,返回输出流
		OutputStream out = fs.create(new Path("/test.jar"));
		//工具类将in中的内容copy到out中,大师级默认都是4096
		IOUtils.copyBytes(in, out, 4096, true);
	} 
	
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GeoWin_CAU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值