提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、HDFS的基本操作
  • 二、完整代码

一、HDFS的基本操作

基于已经学习到的Hadoop API编程知识,自己动手实现一个简单的HDFS Shell程序,程序名称为HShell,要求能够支持以下功能:

1.使用HShell -cp 本地路径 HDFS路径,将文件从Linux本地文件系统拷贝到HDFS指定路径上。

2.使用HShell -rm 路径删除文件

3.使用HShell -rm -r 路径删除目录

4.使用HShell -cp -r 本地目录路径 HDFS路径,将目录从Linux本地拷贝到HDFS指定路径上。

5.使用HShell -list 路径显示某个文件的信息或者某个目录的信息

6.使用HShell -mv 路径 路径移动文件或者重命名文件

7.使用HShell -find 文件名 目录实现在目录下递归查找某个文件名的文件。

二、完整代码

package homework;
import java.util.Scanner;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FileUtil;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.yarn.webapp.hamlet.Hamlet;import java.net.URI;
public class HShell {public static void main(String[] args){String choice;while(true) {Scanner sc = new Scanner(System.in);choice = sc.nextLine();if(choice.equals("exit")){System.out.println("HShell have exited");break;}String[]  shell=choice.split(" ");if(shell[2].equals("-r")){choice=shell[0]+" "+shell[1]+" "+shell[2];}else{choice=shell[0]+" "+shell[1];}switch (choice) {case "HShell -rm":if(shell.length>4){System.out.println("input error,please input again");}else {DeleteFile(shell[2]);}break;case "HShell -rm -r":if(shell.length>5){System.out.println("input error,please input again");}else{DeleteDir(shell[3]);}break;case "HShell -list":if (shell.length>4){System.out.println("input error,please input again");}else {ListFile(shell[2]);}break;case "HShell -mv":if(shell.length>5){System.out.println("input error,please input again");}else {Rename(shell[2],shell[3]);break;}case "HShell -cp":if (shell.length>5){System.out.println("input error,please input again");}else {UploadFile(shell[2],shell[3]);}break;case "HShell -cp -r":if(shell.length>6){System.out.println("input error,please input again");}else {UploadDir(shell[3],shell[4]);break;}default:System.out.println("no such HShell code,please input again");break;case "HShell -find":if(shell.length>5){System.out.println("input error,input again");break;}else {Findfile(shell[2],shell[3]);}break;}}}public static void DeleteFile(String filename){try {//Scanner sc = new Scanner(System.in);String filePath = '/'+filename;FileSystem fs = FileSystem.get(new URI("hdfs://master:9000"), new Configuration());Path hdfsPath = new Path(filePath);if(fs.delete(hdfsPath,false)){System.out.println("File "+ filePath +" has been deleted successfully!");}}catch(Exception e) {e.printStackTrace();}}public static void DeleteDir(String dirname){try {String dirPath = '/'+dirname;FileSystem fs = FileSystem.get(new URI("hdfs://master:9000"), new Configuration());Path hdfsPath = new Path(dirPath);if(fs.delete(hdfsPath,true)){System.out.println("Directory "+ dirPath +" has been deleted successfully!");}}catch(Exception e) {e.printStackTrace();}}public static void ListFile(String dirnname){try {String filePath = dirnname;FileSystem fs = FileSystem.get(new URI("hdfs://master:9000"), new Configuration());Path srcPath = new Path(filePath);FileStatus[] stats = fs.listStatus(srcPath);Path[] paths = FileUtil.stat2Paths(stats);for(Path p : paths)System.out.println(p.getName());}catch(Exception e) {e.printStackTrace();}}public static void Rename(String sourcePath,String targetPath){try {String srcStrPath1 = sourcePath;String dstStrPath1= targetPath;//System.out.println(srcStrPath1);//System.out.println(dstStrPath1);FileSystem fs = FileSystem.get(new URI("hdfs://master:9000"), new Configuration());Path srcPath = new Path(srcStrPath1);Path dstPath = new Path(dstStrPath1);if(fs.rename(srcPath,dstPath)) {System.out.println("rename from " + srcStrPath1 + " to " + dstStrPath1 + "successfully!");}}catch(Exception e) {e.printStackTrace();}}public static void UploadFile(String sourcePath,String targetPath){///headless/Desktop/workspace/hdfs_op/Y02014452.txttry {String srcStrPath = sourcePath;String dstStrPath = targetPath;FileSystem fs = FileSystem.get(new URI("hdfs://master:9000"), new Configuration());Path srcPath = new Path(srcStrPath);Path dstPath = new Path(dstStrPath);fs.copyFromLocalFile(srcPath,dstPath);System.out.println(srcStrPath+"upload finished");}catch(Exception e) {e.printStackTrace();}}public static void UploadDir(String sourcePath,String targetPath){try {String srcStrPath = sourcePath;String dstStrPath = targetPath;FileSystem fs = FileSystem.get(new URI("hdfs://master:9000"), new Configuration());Path srcPath = new Path(srcStrPath);Path dstPath = new Path(dstStrPath);fs.copyFromLocalFile(srcPath,dstPath);System.out.println(srcStrPath+"upload finished");}catch(Exception e) {e.printStackTrace();}}public static void Findfile(String targefile,String sourcePath){boolean flag=false;try {FileSystem fs = FileSystem.get(new URI("hdfs://master:9000"), new Configuration());Path srcPath = new Path(sourcePath);FileStatus[] stats = fs.listStatus(srcPath);for(FileStatus status:stats){if(status.isDirectory()){String dirPath=status.getPath().toString();String target=targefile;Findfile(target,dirPath);}else {if(status.getPath().getName().equals(targefile)) {System.out.println("filename:" + status.getPath());flag=true;}}}}catch (Exception e){e.printStackTrace();}}
}

HDFS基础文件操作实验相关推荐

  1. Python基础-文件操作

    Python基础-文件操作 1.文件的打开和关闭 # 1.打开文件 # 默认r模式 只读 文件不存在,报错 # f = open('a.txt')# w模式 写权限 # 如果文件不存在,就会创建文件 ...

  2. 按平均成绩排行c语言文件操作,学生成绩管理系统(c语言结构体以及文件操作)实验报告精选.doc...

    学生成绩管理系统(c语言结构体以及文件操作)实验报告精选 C程序设计 实验报告 编号: 姓名院系学号任课教师于萧指导教师实验地点实验时间实验名称文件操作同 组 人无预习报告(对实验主要内容的认识)得分 ...

  3. python实验目的_实验五 Python文件操作实验

    实验五 Python文件操作实验 一.实验目的与要求 1.掌握文件的打开和关闭. 2.掌握文件的不同操作,如读写.重命名.删除. 3.熟悉闭包.装饰器以及常见内置函数的使用. 二.实验原理 在pyth ...

  4. Hadoop 核心编程之 HDFS 的文件操作

    前言 本文并没有打算介绍 HDFS 的读写流程,虽然这是一块比较重要的内容.如果你感兴趣,可以去搜索相关资料.如果一遍没有看懂,请看第二遍. 本文还是以代码为主,并附以简短的说明,帮助你理解代码的逻辑 ...

  5. logback-spring.xml 文件路径 相对路径_小白学 Python(18):基础文件操作

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

  6. python 相对路径报错_小白学 Python(18):基础文件操作

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

  7. Python基础--文件操作

    文件操作通常用来存储程序结果,以便下次可以直接使用,不必要重新运行一遍.文件操作最基本的三步:1.打开文件或者新建文件  2. 读或者写  3 关闭文件流保存数据. Python 访问模式如下: 打开 ...

  8. python基础-文件操作(10)

    一.什么是文件 等等这些都叫做文件,各种格式的.但不仅仅限制于这些. 二.文件的作用 大家应该听说过一句话:"好记性不如烂笔头". 不仅人的大脑会遗忘事情,计算机也会如此,比如一个 ...

  9. python文件操作实验总结,[干货分享]Python文件操作技巧总结

    引言 小伙伴们,今天给大家讲解一下python程序下的文件操作完整技巧梳理,都是笔者总结的干货.通过本文阅读,不仅可以带来生产力提升,也可以开发小脚本为生活带来乐趣.         首先不知道大家对 ...

最新文章

  1. 深度学习神经网络 端到端的学习方式
  2. OpenCV中利用cvConvertScale()对图像数据作线性变换
  3. 5.成本会计理论的U9系统实现(上)
  4. Google 最新的 Fuchsia OS【科技讯息摘要】
  5. 加拿大大数据:正在升温的大数据市场
  6. 返回表达式列表中最小值least(exp1,exp2,exp3,……,expn)
  7. 表单验证之validform.js使用方法
  8. Visual Studio Online 终于公开上线了
  9. CS231n-Numpy入门
  10. ansys toolkit教程_「实用」ANSYS电磁仿真工具推荐,做仿真的你可以试试
  11. 人体3D重建-ICON论文解读
  12. java 叠加层_java简单设置图层实现图片叠加
  13. jvm内存区域之虚拟机栈、pc计数器、本地方法栈
  14. 第四章第六节数据资产盘点-系统现状调研情况
  15. cBridge 2.0: 基于Celer状态守卫者网络的通用跨链平台
  16. app pour android,Comment configurer Dell Mobile Connect pour Android
  17. hmailserver搭建一个公网可收发的自用邮局
  18. 首次授权中国区独立维修商,高冷的苹果也为“五斗米“折腰?
  19. JavaScript 之 核心语法 [ 对象 ]
  20. 日记 | STM32串口显示YL-69土壤湿度

热门文章

  1. 15大不同领域问答对比,ChatGPT模型大战:国产版百度文心一言、昆仑万维天工能否击败GPT-4(含百度文心一言、昆仑万维天工个人内测体验测试邀请码获取方法,亲测有效)
  2. 粗糙集理论学习笔记02
  3. 考研计算机专业课听谁的网课,2大戳心考研忠告——考研英语谁的网课好?
  4. 华为鸿蒙系统前身,鸿蒙OS四大看点详解!华为的野心不止手机,而是“一统江湖”...
  5. android5.1.1的vivo手机,【Android】解决Vivo及5.1低版本 webView适配问题
  6. IPC Hi3518EV300开发板——移植Linux 0.串口快速烧录教程
  7. (转载)6款实惠好用的Windows Wi-Fi工具
  8. mysql数据库二进制备份_MySQL数据库如何创建全库及二进制增量备份脚本
  9. java的time类型_java有关Time类型数据的接收和转换
  10. 2017.2.15 日课