标签:
下面的就是hadoop的一些文件基本操作,主要有上传文件,下载文件和删除文件;不过要使用以下功能的需要注意一些地方:
1、要注意是否已经在windows系统配置了域名与ip的映射关系;
2、要操作hdfs系统上的文件时,可以用"/"来代替hdfs的根路径(hdfs://hadoop01:9000/)
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;
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;
public class HadoopDemo {
private static FileSystem fs = null;
@Before
public void init()throws Exception{
//如果没有第三个参数,则在上传文件的时候会出现没有权限的错误,不过这样用是不安全的
//hadoop提供一个叫做kerberos的框架来解决其安全问题
fs = FileSystem.get(new URI("hdfs://hadoop1:9000"), new Configuration(), "root");
}
/*
* 下载文件
*/
@Test
public void downLoad()throws Exception{
InputStream in = fs.open(new Path("/jdk.bin")); //打开一个输入流
OutputStream out = new FileOutputStream("C:\\jdk_1.7"); //创建一个文件输出流
IOUtils.copyBytes(in, out, 4096, true); //第三个参数表示缓存的字节数、第四个参数表示当下载完成后,自动关闭流
}
/*
* 上传文件
*/
@Test
public void upLoad()throws Exception{
InputStream in = new FileInputStream("E://android-sdk_r24.3.3-windows.zip"); //创建一个本地的文件输入流
OutputStream out = fs.create(new Path("/ni/android.zip")); //创建一个hdfs的输出流
IOUtils.copyBytes(in, out, 4096, true);
}
/*
* 删除文件
*/
@Test
public void delete()throws Exception{
fs.delete(new Path("/jdk.bin"),true);
}
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
}
}
标签:
原文地址:http://www.cnblogs.com/0726b/p/4696287.html