对于hdfs的操作,可以使用hadoop fs 的命令,同时也可以使用java来进行操作,下面的一段小例子,就是简单介绍了java操作hdfs的文件等......
package com.hdfs.nefu; /** * @auther XD **/ import java.io.FileInputStream; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IOUtils; public class App { final static String url = "hdfs://localhost/hello"; final static String dir_path = "d1/1000"; final static String file_path = "d1/1000/f100"; public static void main(String[] args) throws IOException, URISyntaxException { /** *加载文件 hdfs流式数据 所以进行操作的时候需要 获得输入输出流等问题 *根据以下代码 可见进行hdfs操作只需要获得 filesystem对象即可 **/ final FileSystem filesystem = FileSystem.get(new URI(url), new Configuration()); //创建文件夹 mkdir(filesystem); /*上传文件的前提是 需要这个文件存在,创建文件形成一个输出流*/ final FSDataOutputStream out = filesystem.create(new Path(file_path)); final FileInputStream in = new FileInputStream("D:\\log.txt"); uploadData(out, in); //下载文件 需要先打开一个文件 才可以下载 final FSDataInputStream input = filesystem.open(new Path(file_path)); downloadData(input); //删除文件夹 deletefile(filesystem); } /*以下方法只是通过快捷键 抽取重构的方法 * 在调用的地方使用快捷键 :Alt+Shift+M 就会出现以下情形*/ private static void deletefile(final FileSystem filesystem) throws IOException { filesystem.delete(new Path(file_path), true); } private static void downloadData(final FSDataInputStream input) throws IOException { IOUtils.copyBytes(input, System.out, 1024, true); } private static void uploadData(final FSDataOutputStream out, final FileInputStream in) throws IOException { IOUtils.copyBytes(in, out, 1024, true); } private static void mkdir(final FileSystem filesystem) throws IOException { filesystem.mkdirs(new Path(dir_path)); } }
原文地址:http://blog.csdn.net/xd_122/article/details/39206269