HDFS是一个分布式文件系统,既然是文件系统,就可以对其文件进行操作,比如说新建文件、删除文件、读取文件内容等操作。下面记录一下使用JAVA API对HDFS中的文件进行操作的过程。

  对分HDFS中的文件操作主要涉及一下几个类:

  Configuration类:该类的对象封转了客户端或者服务器的配置。

  FileSystem类:该类的对象是一个文件系统对象,可以用该对象的一些方法来对文件进行操作。FileSystem fs = FileSystem.get(conf);通过FileSystem的静态方法get获得该对象。

  FSDataInputStream和FSDataOutputStream:这两个类是HDFS中的输入输出流。分别通过FileSystem的open方法和create方法获得。

  具体如何对文件操作清下下面例子:

package hadoop;import java.io.InputStream;
import java.net.URI;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;/*** 测试文件:* @author z714303584* * HDFS文件上传下载实例*/
public class HbaseTest {//hadoop fs的配置文件static  Configuration conf = new Configuration(true);static{//指定hadoop fs的地址conf.set("fs.default.name", "hdfs://master:9000");}/*** 将本地文件(filePath)上传到HDFS服务器的指定路径(dst)* @param filePath* @param dst* @throws Exception*/public static void uploadFileToHDFS(String filePath,String dst) throws Exception {//创建一个文件系统FileSystem fs = FileSystem.get(conf);Path srcPath = new Path(filePath);Path dstPath = new Path(dst);Long start = System.currentTimeMillis();fs.copyFromLocalFile(false, srcPath, dstPath);System.out.println("Time:"+ (System.currentTimeMillis() - start));System.out.println("________________________Upload to "+conf.get("fs.default.name")+"________________________");fs.close();getDirectoryFromHdfs(dst);}/*** 下载文件* @param src* @throws Exception*/public static void downLoadFileFromHDFS(String src) throws Exception {FileSystem fs = FileSystem.get(conf);Path  srcPath = new Path(src);InputStream in = fs.open(srcPath);try {//将文件COPY到标准输出(即控制台输出)IOUtils.copyBytes(in, System.out, 4096,false);}finally{IOUtils.closeStream(in);fs.close();}}/*** 遍历指定目录(direPath)下的所有文件* @param direPath* @throws Exception*/public static void  getDirectoryFromHdfs(String direPath) throws Exception{FileSystem fs = FileSystem.get(URI.create(direPath),conf);FileStatus[] filelist = fs.listStatus(new Path(direPath));for (int i = 0; i < filelist.length; i++) {System.out.println("_________________***********************____________________");FileStatus fileStatus = filelist[i];System.out.println("Name:"+fileStatus.getPath().getName());System.out.println("size:"+fileStatus.getLen());System.out.println("_________________***********************____________________");}fs.close();}/*** 测试方法* @param args*/public static void main(String[] args) {try {
//          getDirectoryFromHdfs("/hbase/");//            uploadFileToHDFS("F:/数据库优化/2000W/1800w-2000w.csv", "/zhuss/hotel/data/");downLoadFileFromHDFS("/zhuss/hotel/data/最后5000.csv");} catch (Exception e) {// TODO 自动生成的 catch 块e.printStackTrace();}}}

HDFS中JAVA API的使用(hadoop的文件上传和下载)相关推荐

  1. Java Web学习笔记09:文件上传与下载

    文章目录 一.SmartUpload组件 1.SmartUpload概述 2.SmartUpload优点 3.SmartUpload缺点 4.环境准备

  2. 6.HDFS文件上传和下载API

    HDFS文件上传和下载API package hdfsAPI;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop ...

  3. Java Web项目中遇到的文件上传与下载问题

    (转发自:https://www.cnblogs.com/xdp-gacl/p/4200090.html)   在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中 ...

  4. Springboot中常用的文件上传和下载通用接口

    记录下通用的文件上传和下载接口,一般的开发中都是会使用到的,不过写的最简单的版本. 文章目录 程序测试 本文小结 程序测试 在yml中配置一个文件保存的路径 #保存文件的路径 common:file: ...

  5. java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息...

    1.java使用Jsch实现远程操作linux服务器进行文件上传.下载,删除和显示目录信息. 参考链接:https://www.cnblogs.com/longyg/archive/2012/06/2 ...

  6. java里面的文件上传与下载

    java里面的文件上传与下载 文件的上传与下载主要用到两种方法: 1.方法一:commons-fileupload.jar commons-io.jar apache的commons-fileuplo ...

  7. java spring文件下载_SpringMVC实现文件上传和下载的工具类

    本文主要目的是记录自己基于SpringMVC实现的文件上传和下载的工具类的编写,代码经过测试可以直接运行在以后的项目中. 开发的主要思路是对上传和下载文件进行抽象,把上传和下载的核心功能抽取出来分装成 ...

  8. java实现ftp连接、登陆、上传、下载、删除文件、获取目录、文件列表

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java实现ftp连接.登陆.上传.下载.删除文件.获取目录.文件列表等操作. 本地调试,首先需要在本机上开启ftp服务和ftp站点. 测试代码 ...

  9. Java如何进行文件上传与下载

    Java文件上传与下载 在项目开发中难免遇到这样的问题,对于我这种小白,那只能寻求度娘的帮助拉,各种搜索和看博客文章,当实际运行时....哎,痛苦. 今日分享一波,望你所用,烦闷去之. 文件上传 首先 ...

最新文章

  1. webbench网站压力测试工具的使用方法
  2. 阿里云物模型层初始化代码实现
  3. BZOJ 2154 Crash的数字表格 (莫比乌斯反演)
  4. 高速的二舍八入三七作五_京承高速收费“二舍八入 三七作五”
  5. java中redis存储map集合_使用RedisTemplate存储Map集合的一点注意
  6. QuantLib 101之Swap
  7. Docker入门系列(一):目标和安排
  8. wordpress 伪静态nginx设置
  9. pyton 编写脚本检测两台主机之间的通信状态,异常邮件通知
  10. gcc/g++/make/cmake/makefile/cmakelists的恩恩怨怨
  11. xcode object c 函数注释
  12. 深度学习框架:动态图 vs 静态图
  13. 豆瓣链接打开之后总是跳转首页
  14. Simon Game实现过程记录
  15. 微信小程序——时间轴的实现
  16. react具名插槽与作用域插槽
  17. uniapp如何引入colorUI
  18. [转]Windows IIS WEB服务器配置安全规范
  19. jQuery事件使用
  20. 滨江学院c语言期中考试试题,南信大滨江学院linux期末作业.doc

热门文章

  1. 网络研讨室_Java移动开发网络研讨会2:续集
  2. 前端开发_HTML5_CSS部分-display属性
  3. JeewxBoot微信管家平台 支持微信公众号/小程序/微信第三方平台/抽奖活动等
  4. 大牛手把手带你!2021新一波程序员跳槽季,大牛最佳总结
  5. C语言源代码系列-管理系统之家庭财务小管家
  6. 用于图像描述的注意上的注意模型《Attention on Attention for Image Captioning》
  7. TCP的流量窗口……看完笑出鹅叫声
  8. 公众平台 java_微信公众平台开发详细步骤与java代码
  9. 高防服务器的原理是什么
  10. android手机防盗图片,android手机防盗措施介绍【图文】