本文主要介绍了怎样编写hadoop的文件上传和下载
import java.io.IOException;
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;
public class Copy {
public static void main(String[] args) throws Exception {
//添加需要运行的程序
}
//从本地文件系统上传到HDFS文件系统
public static void copyFromHdfs() throws URISyntaxException, IOException {
//获取文件系统的配置文件
Configuration conf = new Configuration() ;
URI uri = new URI(“hdfs://hadoop:9000”) ;
FileSystem fs = FileSystem.get(uri, conf) ;
//创建一个本地文件对象
Path path1 = new Path(“e://demo/copy.txt”) ;
//创建一个hdfs的目录文件对象
Path path2 = new Path(“hdfs://hadoop:9000/copy/”) ;
//检测目录是否存在,如果不存在则创建一个新的文件价
if(!(fs.exists(path2))){
fs.mkdirs(path2);
}
//调用方法实现文件的上传
fs.copyFromLocalFile(path1, path2);
//释放资源
fs.close();
}
//从HDFS上下载到本地文件的系统
public static void copyToHdfs() throws URISyntaxException, IOException{
//获取文件系统的配置文件
Configuration conf = new Configuration() ;
URI uri = new URI("hdfs://hadoop:9000") ;//throw URISyntaxException
FileSystem fs = FileSystem.get(uri, conf);//throw IOException
//建立文件的源地址和目的地址对象
Path src = new Path("hdfs://hadoop:9000/copy/copy.txt") ;
Path dst = new Path("f://demo/") ;
//判断文件是否存在,如果存在则上传,否则给出提示
if(fs.exists(src)){
fs.copyToLocalFile(src, dst);
}else{
System.out.println("文件不存在!");
}
fs.close();
}
}