packagecom.hdfs.demo;importorg.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.*;importorg.apache.hadoop.fs.FileStatus;importorg.apache.hadoop.fs.FileSystem;importorg.apache.hadoop.fs.Path;importorg.apache.hadoop.io.IOUtils;importjava.io.IOException;importjava.net.URI;importjava.net.URISyntaxException;importjava.util.Iterator;importjava.util.Map;importjava.util.Set;/***@author王传礼*/
public classHdfsDemo {/*** 根据配置获取HDFS文件操作系统
*
*@returnFileSystem*/
public staticFileSystem getHadoopFileSystem() {
FileSystem fs= null;
Configuration conf= null;//方法:本地没有hadoop系统,但可以远程访问。根据给定的URI和用户名,访问hdfs的配置参数
conf = newConfiguration();//Hadoop的用户名
String hdfsUserNmae = "root";
URI hdfsUri= null;try{
hdfsUri= new URI("hdfs://192.168.182.135:8020");//HDFS的访问路径
} catch(URISyntaxException e) {
e.printStackTrace();
}try{//根据远程的NN节点,获取配置信息,创建HDFS对象
fs =FileSystem.get(hdfsUri, conf, hdfsUserNmae);
}catch(IOException e) {
e.printStackTrace();
}catch(InterruptedException e) {
e.printStackTrace();
}returnfs;
}/*** 这里的创建文件夹同shell中的mkdir -p 语序前面的文件夹不存在
* 跟java中的IO操作一样,也只能对path对象做操作;但是这里的Path对象是hdfs中的
*
*@paramfs,filepath
*@return
*/
public static booleanmyCreatePath(FileSystem fs,String filepath) {boolean b = false;
Path path= newPath(filepath);try{//even the path exist,it can also create the path.
b =fs.mkdirs(path);
}catch(IOException e) {
e.printStackTrace();
}final