Hadoop HDFS Tools
来源:互联网 发布:搜狗海淘 知乎 编辑:程序博客网 时间:2024/06/17 13:09
Hadoop HDFS Tools
package cn.buaa;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FSDataOutputStream;import org.apache.hadoop.fs.FileStatus;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;import org.apache.hadoop.fs.RemoteIterator;import org.apache.hadoop.io.IOUtils;/* * @author lzxyzq * HDFS一些常用命令,可参照Hadoop API FileSystem */public class HDFSTools { public HDFSTools(){ } //判断某个文件是否存在hdfs文件系统中已经存在 public static boolean exists(Configuration config,String path)throws IOException{ //根据配置文件信息,形成文件系统对象 FileSystem fs = FileSystem.get(config); return fs.exists(new Path(path)); //把文件路径转换成Path //判断是否已经存在文件 } //给一个文件名和内容,我们在hdfs中创建文件 public static void createFile(Configuration config,String path,byte[] buf)throws IOException{ //config-->fs-->fos-->write-->close FileSystem fs = FileSystem.get(config); Path path2 = new Path(path); FSDataOutputStream fos = fs.create(path2); fos.write(buf); fos.close(); fs.close(); } public static void createFile(Configuration config,String path,String info)throws IOException{ //和上面函数的区别是,上面函数传入的是buf数据,下面传入的是String createFile(config,path,info.getBytes()); } //把hdfs上的一个文件拷贝到hdfs上另外一个位置 public static void copyFromLocal(Configuration config,String path1,String path2)throws IOException{ FileSystem fs = FileSystem.get(config); Path p1 = new Path(path1); Path p2 = new Path(path2); fs.copyFromLocalFile(true, true, p1, p2); //delSrc, overwrite, srcs, dst fs.close(); } //删除hdfs上的某一个文件 public static boolean deleteFile(Configuration config,String path,boolean mark)throws IOException{ //config-->fs-->delete-->close-->返回 FileSystem fs = FileSystem.get(config); Path p1 = new Path(path); boolean flag = fs.delete(p1, mark); fs.close(); return flag; } public static boolean deleteFile(Configuration config,String path)throws IOException{ return deleteFile(config,path,true); } //修改HDFS上的文件名字String-->PATH-->fs.renameFile public static boolean renameFile(Configuration config,String path1,Strign path2){ //config-->fs-->delete-->close-->返回 FileSystem fs = FileSystem.get(config); Path oldName = new Path(path1); Path newName = new Path(path2); boolean flag = fs.rename(oldName, newName); fs.close(); return flag; } //创建hdfs上的一个目录 public static boolean makeDir(Configuration config,String path)throws IOException{ FileSystem fs = FileSystem.get(config); Path name = new Path(path); boolean flag = fs.mkdirs(name); fs.close(); return flag; } public static RemoteIterator<LocatedFileStatus> listFiles(Configuration config,String path,boolean mark)throws IOException{ FileSystem fs = FileSystem.get(config); RemoteIterator<LocatedFileStatus> r1 = fs.listFiles(new Path(path), mark); return r1; } public static RemoteIterator<LocatedFileStatus> listFiles(Configuration config,String path)throws IOException{ return listFiles(config,path,false); } public static FileStatus[] listStatus(Configuration config, String path)throws IOException{ FileSystem fs = FileSystem.get(config); Path path1 = new Path(path); FileStatus status[] = fs.listStatus(path1); fs.close(); return status; } //读取文件内容,返回字符串 public static String readFile(Configuration config,String path)throws IOException{ FileSystem fs = FileSystem.get(config); String temp; InputStream is = null; //输入流 ByteArrayOutputStream baos = null; //输出流 Path p = new Path(path); try{ is =fs.open(p); //打开输入流 //输入流输出流对接 baos = new ByteArrayOutputStream(is.available()); //把输入流的内容导入到输出流中 IOUtils.copyBytes(is, baos, config); temp = baos.toString(); //把输出流的内容转成字符串 } finally{ //关闭输入输出流和文件系统 IOUtils.closeStream(is); IOUtils.closeStream(baos); fs.close(); } return temp; } public static boolean createDictionary(Configuration config,String path)throws IOException{ FileSystem fs = FileSystem.get(config); Path p = new Path(path); boolean flag = fs.mkdirs(p); fs.close(); return flag; } public static void main(String[] args) throws IOException{ Configuration config = new Configuration(); String dir = "/test"; boolean flag = exists(config,dir); if(flag==true){ System.out.println("Sorry it's exists"); } else{ flag = createDictionary(config,dir); if(flag==true){ System.out.println("创建成功"); } else{ System.out.println("创建失败"); } } String info = "北航!!!"; String fileName = dir+"/buaa.txt"; createFile(config,fileName,info); System.out.println("创建文件成功"); String message = readFile(config,fileName); System.out.println(message); FileStatus all[] = listStatus(config,"/"); for(int i=0;i<all.length;i++){ System.out.println(all[i]); } FileSystem fs = FileSystem.get(config); RemoteIterator ri = listFiles(config,"/",true); while(ri.hasNext()){ String str = ri.next().toString(); System.out.println(str); } deleteFile(config,fileName); System.out.println(fileName+"is deleted"); }}
0 0
- Hadoop HDFS Tools
- Hadoop HDFS over HTTP 2.4.1 - Using HTTP Tools
- Hadoop HDFS over HTTP 2.4.1 - Using HTTP Tools
- Hadoop HDFS
- hadoop hdfs
- hadoop hdfs
- hadoop hdfs
- Hadoop-HDFS
- Hadoop HDFS
- Hadoop - HDFS
- hadoop HDFS
- Hadoop-hdfs
- hadoop---hdfs
- Hadoop-HDFS
- Hadoop-HDFS
- Hadoop-HDFS
- Hadoop HDFS
- Hadoop--HDFS
- 机器学习过度拟合问题一些原因
- 51Nod 1049 最大子段和
- 文件传输基础—Java IO流 FileInputStream 的运用
- 前端-js-this
- C经典 结构图的三种定义方式
- Hadoop HDFS Tools
- mock私有变量的时候出现的问题
- cocos-js,时间相关的处理
- mysqldump 导出个表结构或数据
- Java中Set类初始化问题
- Hadoop安装及开发
- jetbrains系列IDE-Vmoptions 优化指南
- IAR的STlink下载出现 Failed to set configuration with MCU name STM8S207MB: SWIM error [30006]:解决办法
- Django的安装