在 linux 上我们可以通过命令对 hdfs 中的文件及文件目录进行处理,但是在 Windows 上编写代码时需要用到 hdfs 时该如何处理呢?其实 hdfs 也是可以部署在 Windows 系统上的,但是考虑到稳定性一般通常是部署在 linux 系统上,同时由于 hadoop2 和   hadoop3 的版本不同,导致其自身的功能上有些不同,其中 hadoop2 无法直接在页面上进行对文件的创建和删除等操作,但是hadoop3 可以直接操作。有关更多 hadoop 的内容,可以见 https://blog.csdn.net/qq_39187675/article/details/101557718

在 Windows 系统中,我们可以通过编写 java 代码来对hdfs中的文件进行操作。在写代码之前,需要导入有关 hadoop 的 jar 包才能完成相关操作,其中 jar 包的链接在下方。如果 linux 系统是在虚拟机上安装的,在运行代码是需要将虚拟网络打开,不然的话是连接不上 linux 上的 hadoop 的。

链接:https://pan.baidu.com/s/1U0TwbIvYS3jl_na86iPW9g 
提取码:th4u

其实对 hdfs 的操作,无非就是上传、下载、读取文件内容等操作, 这篇文章只是单独编写一个类来完成对这些操作,常用来上传文件和下载文件,对于读取 hdfs 目录文件中的内容更多的是在 MapReduce 中进行的,在这里就不多叙述,在后面的文章中会进行详细介绍。下面的代码其实不止可以对 linux 上的 hdfs 进行操作,同时也可以对 Windows 上的进行操作,改一下IP地址就好了。

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;public class HDFSAPI {public static void main(String[] args) throws IOException {Configuration configuration = new Configuration ();   //在选择Configuration的时候要注意不要选错,在这里要选择hadoop相关的那个,其他的也是如此configuration.set ("fs.defaultFS", "hdfs://192.168.2.56:9000");  //这是linux系统的IP地址,端口号都是9000configuration.set ("dfs.replication", "1");configuration.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem");configuration.set("fs.file.impl", "org.apache.hadoop.fs.LocalFileSystem");FileSystem fileSystem = FileSystem.get (configuration);Path path = new Path ("/hdfsdemo");  if (!fileSystem.isDirectory (path)) {   //判断是否已存在目录fileSystem.mkdirs (path);    //创建目录}fileSystem.copyFromLocalFile (new Path ("E:\\data\\test1.txt"), new Path ("hdfs://192.168.13.151:9000/hdfsdemo"));    //上传本地文件到hdfs中fileSystem.copyToLocalFile (new Path ("/hdfsdemo/test1.txt"), new Path ("E:\\data\\t.txt"));    //从hdfs中下载文件到本地FileStatus[] fileStatuses = fileSystem.listStatus (new Path ("/hdfsdemo"));  //文件的状态for(FileStatus item:fileStatuses){System.out.println (item);}}
}

在Windows系统上对hfds中的文件进行操作相关推荐

  1. Redis进阶实践之三如何在Windows系统上安装安装Redis

    一.Redis的简介 Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset( ...

  2. 如何在windows系统上安装ubuntu双系统

    如何在windows系统上安装ubuntu双系统 一.准备工具: 1.U盘 2.软碟通:UltraISO,EasyBCD 3.系统镜像.下载网址1:https://www.ubuntu.com/dow ...

  3. 如何在Windows系统上使用Object Detection API训练自己的数据?

    前言 之前写了一篇如何在windows系统上安装Tensorflow Object Detection API?(点击跳转) 然后就想着把数据集换成自己的数据集进行训练得到自己的目标检测模型.动手之前 ...

  4. activeperl安装不成功_手把手教你:Windows系统上安装GPU深度学习环境

    前言 在入手学习深度学习的过程当中,有好几个朋友都咨询过我如何安装深度学习环境,之前写过一篇在Ubuntu环境下安装深度学习环境,但是有部分朋友在Windows电脑上安装深度学习环境遇到过许多的问题, ...

  5. 在windows系统上word转pdf

    在windows系统上word转pdf 一.前言:我在做文件转换过程中遇到的一些坑,在这里记录下,因为项目需求,需要使用html转pdf,由于itext转换质量问题(一些Css属性不起作用),导致只能 ...

  6. 基因家族的鉴定-基于Windows系统上的HMMER

    文章首发于简书链接(https://www.jianshu.com/p/24e4ad69f3e5),发此备份 基因组的序列提取,详情请看我之前的教程:https://www.jianshu.com/p ...

  7. 基因家族的鉴定-基于windows系统上的本地blast

    文章首发于简书链接(https://www.jianshu.com/p/c876a5636554).发此备份. 基因家族的鉴定-基于windows系统上的本地blast 基因组的序列提取,详情请看我之 ...

  8. Windows 系统上查询 NVIDIA GPU 型号、CUDA 版本和驱动程序版本

    Windows 系统上查询 NVIDIA GPU 型号.CUDA 版本和驱动程序版本 1. NVCUDA.DLL - NVIDIA CUDA 10.1.135 driver - NVIDIA 驱动程序 ...

  9. 需求:解压获取ipa里面的图片在windows系统上打不开

    需求:解压获取ipa里面的图片资源在windows系统上竟然打不开,何解? 想参考第三方的app里面的图片资源,但不知道为神马从ipa文件提取出来的png图片在mac上可以打开,而发送到window上 ...

最新文章

  1. 别乱提交代码了,看下大厂 Git 提交规范是怎么做的!
  2. 详解死机的原因和预防方法
  3. webpack 使用别名(resolve.alias)解决scss @import相对路径导致的问题
  4. 【转】自然语言系列学习之表示学习与知识获取(一)分布式表示
  5. 工程图样中粗实线的用途_图纸天天画,粗实线和细实线的线宽比例是多少?2:1还是3:1?...
  6. 打了断点为直接运行完_BBC主持人多次打断,香港大律师忍不住发飙
  7. 偏标记(partial)学习
  8. ffmpeg压制视频命令及常用转码参数解析
  9. arduino电风扇程序_【NO.7】智能风扇控制器-
  10. C#钉钉官方工作流和自定义工作流代码实现
  11. vue中报错, [WDS] Disconnected!解决方法
  12. 微信小程序:独家全新娱乐性超高的喝酒神器
  13. Win11耗电严重怎么解决 Win11耗电太快教程
  14. 7T免费视频资料!速来!
  15. Zend PDT Eclipse + Zend Server Communication Edition(CE)
  16. 高铁招计算机专业吗,开高铁是什么专业_哪些学校有高铁专业?
  17. 在matlab中怎么限定值域,matlab中如何限定wgn函数的值域
  18. 设计模式(二)抽象工厂模式
  19. Cris 的 Spark SQL 笔记
  20. Taro多端开发webview如何区分端,引入SDK,调用相应接口?

热门文章

  1. Python问题:UnboundLocalError: local variable 'xxx' referenced before assignment
  2. matlab默认英文字体是什么?我使用console之后出现了乱码
  3. 锤子手机便签导入另一个手机云便签中怎么操作?
  4. 完美解决composer提示输入用户名和密码
  5. springcloud整合Gateway
  6. 微信更新,重点关注!
  7. c语言syslog日志记录
  8. C++面向对象程序设计:地铁自动售票系统
  9. 如何制定客户留存策略_运营参考|促活、拉新、留存、变现,7种策略教你做好用户运营...
  10. 交换最大数与最小数java编程_善知教育笔记之JavaSE_Java编程基础