java实现-hdfs上的文件上传下载(windows)
来源:互联网 发布:centos 6.5更新时间 编辑:程序博客网 时间:2024/05/22 04:35
java–HDFS文件操作实现
全局静态变量:hdfs的地址和端口号
private static String HDFSUri = "hdfs://10.8.177.29:8020";
1. 获取文件系统
/** * 获取文件系统 * * @return FileSystem 文件系统 */ public static FileSystem getFileSystem() { //读取配置文件 Configuration conf = new Configuration(); // 文件系统 FileSystem fs = null; String hdfsUri = HDFSUri; if(StringUtils.isBlank(hdfsUri)){ // 返回默认文件系统 如果在 Hadoop集群下运行,使用此种方法可直接获取默认文件系统 try { fs = FileSystem.get(conf); } catch (IOException e) { e.printStackTrace(); } }else{ // 返回指定的文件系统,如果在本地测试,需要使用此种方法获取文件系统 try { URI uri = new URI(hdfsUri.trim()); fs = FileSystem.get(uri,conf); } catch (Exception e) { e.printStackTrace(); } } return fs; }
2. 创建文件目录
入参是创建的文件目录的地址
/** * 创建文件目录 * * @param path 文件路径 */ public static void mkdir(String path) { try { FileSystem fs = getFileSystem(); System.out.println("FilePath="+path); // 创建目录 fs.mkdirs(new Path(path)); //释放资源 fs.close(); } catch (Exception e) { e.printStackTrace(); } }
3. 判断目录是否存在
判断某目录是否存在,存在返回true,不存在返回false;
/** * 判断目录是否存在 * * @param filePath 目录路径 * @param create 若不存在是否创建 */ public static boolean existDir(String filePath, boolean create){ boolean flag = false; if (StringUtils.isEmpty(filePath)){ return flag; } try{ Path path = new Path(filePath); // FileSystem对象 FileSystem fs = getFileSystem(); if (create){ if (!fs.exists(path)){ fs.mkdirs(path); } } if (fs.isDirectory(path)){ flag = true; } }catch (Exception e){ e.printStackTrace(); } return flag; }
4. 本地文件上传至 HDFS
windows测试环境下,上传本地文件到HDFS文件系统。
srcFile本地文件路径,源文件路径;
destPath hdfs路径,目的文件路径。
/** * 本地文件上传至 HDFS * * @param srcFile 源文件 路径 * @param destPath hdfs路径 */ public static void copyFileToHDFS(String srcFile,String destPath)throws Exception{ FileInputStream fis=new FileInputStream(new File(srcFile));//读取本地文件 Configuration config=new Configuration(); FileSystem fs=FileSystem.get(URI.create(HDFSUri+destPath), config); OutputStream os=fs.create(new Path(destPath)); //copy IOUtils.copyBytes(fis, os, 4096, true); System.out.println("拷贝完成..."); fs.close(); }
5.从 HDFS 下载文件到本地
srcFile HDFS文件路径 源文件路径;
destPath 本地路径 目录文件路径。
/** * 从 HDFS 下载文件到本地 * * @param srcFile HDFS文件路径 * @param destPath 本地路径 */ public static void getFile(String srcFile,String destPath)throws Exception { //hdfs文件 地址 String file=HDFSUri+srcFile; Configuration config=new Configuration(); //构建FileSystem FileSystem fs = FileSystem.get(URI.create(file),config); //读取文件 InputStream is=fs.open(new Path(file)); IOUtils.copyBytes(is, new FileOutputStream(new File(destPath)),2048, true);//保存到本地 最后 关闭输入输出流 System.out.println("下载完成..."); fs.close(); }
6. 删除文件或者文件目录
/** * 删除文件或者文件目录 * * @param path */ public static void rmdir(String path) { try { // 返回FileSystem对象 FileSystem fs = getFileSystem(); String hdfsUri = HDFSUri; if(StringUtils.isNotBlank(hdfsUri)){ path = hdfsUri + path; } System.out.println("path:"+path); // 删除文件或者文件目录 delete(Path f) 此方法已经弃用 System.out.println( fs.delete(new Path(path),true)); // 释放资源 fs.close(); } catch (Exception e) { e.printStackTrace(); } }
7. 读取文件的内容,并打印
/** * 读取文件的内容 * @param filePath * @throws IOException */ public static void readFile(String filePath) throws IOException{ Configuration config = new Configuration(); String file=HDFSUri+filePath; FileSystem fs = FileSystem.get(URI.create(file),config); //读取文件 InputStream is=fs.open(new Path(file)); //读取文件 IOUtils.copyBytes(is, System.out, 2048, false); //复制到标准输出流 fs.close(); }
测试:main方法调用
public static void main(String[] args) throws Exception { String HDFSFile = "/hollycrm/data01/codecs/1月.zip"; String localFile = "D:\\1月.zip"; //连接fs FileSystem fs = getFileSystem(); System.out.println(fs.getUsed()); //创建路径 mkdir("/zhaojy2"); //验证是否存在 System.out.println(existDir("/zhaojy2",false)); //上传文件到HDFS copyFileToHDFS("E:\\HDFSTest.txt","/zhaojy/HDFSTest.txt"); //下载文件到本地 getFile("/zhaojy/HDFSTest.txt","D:\\HDFSTest.txt"); // getFile(HDFSFile,localFile); //删除文件 rmdir("/zhaojy2"); //读取文件 readFile("/zhaojy/HDFSTest.txt"); }
注意: 测试时, 一个个调用。
阅读全文
1 0
- java实现-hdfs上的文件上传下载(windows)
- java 实现hadoop的hdfs文件的上传下载删除创建
- HDFS的java接口实现上传下载
- Windows 实现 读取 HDFS 上 文件内容
- java实现文件的上传下载
- java实现文件的上传下载
- HDFS上的常用文件操作java code实现
- java实现文件上传下载
- Java实现文件上传下载
- hadoop hdfs 上传下载文件
- hadoop Hdfs文件上传下载
- java实现将hdfs上的文件下载到本地系统上
- 调用JAVA API对HDFS文件进行文件的读写、上传下载、删除等操作代码详解
- Java 文件的上传下载
- java 文件的上传下载
- JAVA实现:将文件从本地上传到HDFS上、从HDFS上读取等操作
- java实现ftp文件上传下载
- Java实现FTP上传下载文件
- JS工厂模式(工厂函数)、构造函数模式
- 14-1 创建线程()
- JAVA 基础语法(一)——变量以及基本数据类型
- windows下oracle 11g r2 安装过程与卸载详细图解
- Mac 安装 Tomcat
- java实现-hdfs上的文件上传下载(windows)
- 342. Power of Four
- 金蝶KIS商贸版V7.0销售出库单增加整单优惠和成交金额字段
- camera编程
- 【转】获取scrollTop兼容各浏览器的方法,以及body和documentElement有啥区别?
- jmeter数据库测试
- 插入排序(Insert Sort)
- maven安装及使用
- sudo ll 不能执行