Java API实现Hadoop文件系统增删改查

Hadoop文件系统可以通过shell命令hadoop fs -xx进行操作,同时也提供了Java编程接口

maven配置

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>hadoopStudy</groupId>
  5. <artifactId>demo</artifactId>
  6. <version>1.0-SNAPSHOT</version>
  7. <packaging>jar</packaging>
  8. <name>demo</name>
  9. <url>http://maven.apache.org</url>
  10. <properties>
  11. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  12. </properties>
  13. <dependencies>
  14. <dependency>
  15. <groupId>junit</groupId>
  16. <artifactId>junit</artifactId>
  17. <version>3.8.1</version>
  18. <scope>test</scope>
  19. </dependency>
  20. <dependency>
  21. <groupId>org.apache.hadoop</groupId>
  22. <artifactId>hadoop-common</artifactId>
  23. <version>3.0.0</version>
  24. </dependency>
  25. <dependency>
  26. <groupId>org.apache.hadoop</groupId>
  27. <artifactId>hadoop-client</artifactId>
  28. <version>3.0.0</version>
  29. </dependency>
  30. <dependency>
  31. <groupId>org.apache.hadoop</groupId>
  32. <artifactId>hadoop-hdfs</artifactId>
  33. <version>3.0.0</version>
  34. </dependency>
  35. </dependencies>
  36. </project>

代码实现

  1. package hadoopStudy;
  2. import org.apache.hadoop.conf.Configuration;
  3. import org.apache.hadoop.fs.FileSystem;
  4. import org.apache.hadoop.fs.LocatedFileStatus;
  5. import org.apache.hadoop.fs.Path;
  6. import org.apache.hadoop.fs.RemoteIterator;
  7. import java.io.IOException;
  8. import java.net.URI;
  9. import java.net.URISyntaxException;
  10. public class HdfsUtil {
  11. private FileSystem fs;
  12. HdfsUtil(String user){
  13. Configuration cfg = new Configuration();
  14. URI uri = null;
  15. try {
  16. uri = new URI("hdfs://localhost:9000");
  17. } catch (URISyntaxException e) {
  18. e.printStackTrace();
  19. }
  20. try {
  21. // 根据配置文件,实例化成DistributedFileSystem
  22. fs = FileSystem.get(uri, cfg, user); // 得到fs句柄
  23. } catch (IOException e) {
  24. e.printStackTrace();
  25. } catch (InterruptedException e) {
  26. e.printStackTrace();
  27. }
  28. }
  29. /**
  30. * 上传文件
  31. */
  32. public void upload(String src, String dst){
  33. try {
  34. // 上传
  35. fs.copyFromLocalFile(new Path(src), new Path(dst));
  36. } catch (IOException e) {
  37. e.printStackTrace();
  38. }
  39. }
  40. /**
  41. * 下载文件
  42. */
  43. public void download(String src, String dst){
  44. try {
  45. // 下载
  46. fs.copyToLocalFile(new Path(src), new Path(dst));
  47. } catch (IOException e) {
  48. e.printStackTrace();
  49. }
  50. }
  51. /**
  52. * 创建文件夹
  53. */
  54. public void mkdir(String dir){
  55. try {
  56. fs.mkdirs(new Path(dir));
  57. } catch (IOException e) {
  58. // 创建目录
  59. e.printStackTrace();
  60. }
  61. }
  62. /**
  63. * 删除文件
  64. */
  65. public void delete(String name, boolean recursive){
  66. try {
  67. fs.delete(new Path(name), recursive);
  68. } catch (IOException e) {
  69. e.printStackTrace();
  70. }
  71. }
  72. /**
  73. * 重命名
  74. */
  75. public void rename(String source, String dst){
  76. try {
  77. fs.rename(new Path(source), new Path(dst));
  78. } catch (IOException e) {
  79. e.printStackTrace();
  80. }
  81. }
  82. /**
  83. * 列出文件信息
  84. */
  85. public void list(String dir, boolean recursive){
  86. try {
  87. RemoteIterator<LocatedFileStatus> iter = fs.listFiles(new Path(dir), recursive);
  88. while (iter.hasNext()){
  89. LocatedFileStatus file = iter.next();
  90. System.out.println(file.getPath().getName());
  91. }
  92. } catch (IOException e) {
  93. e.printStackTrace();
  94. }
  95. }
  96. }

小结

Hdfs的Java API提供了优雅的FileSystem抽象类,在客户端使用时与其他文件系统区别不大

Java API实现Hadoop文件系统增删改查的更多相关文章

  1. ElasticSearch6(三)-- Java API实现简单的增删改查

    基于ElasticSearch6.2.4, Java API创建索引.查询.修改.删除,pom依赖和获取es连接 可查看此文章. package com.xsjt.learn; import java ...

  2. Neo4j学习笔记(1)——使用Java API实现简单的增删改查

    阅读目录 项目的创建及配置 使用嵌入式数据库 创建节点和关系 查询及更新 删除关系和节点 完整代码 参考资料 回到顶部 项目的创建及配置 因为Neo4j依赖的jar包比较多,所以推荐使用Maven来管 ...

  3. Android 系统API实现数据库的增删改查和SQLite3工具的使用

    在<Android SQL语句实现数据库的增删改查>中介绍了使用sql语句来实现数据库的增删改查操作,本文介绍Android 系统API实现数据库的增删改查和SQLite3工具的使用. 系 ...

  4. java对xml文件做增删改查------摘录

    java对xml文件做增删改查 package com.wss; import java.io.File;import java.util.ArrayList;import java.util.Lis ...

  5. 使用java对sql server进行增删改查

    import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import ...

  6. ASP.NET Web API基于OData的增删改查,以及处理实体间关系

    本篇体验实现ASP.NET Web API基于OData的增删改查,以及处理实体间的关系. 首先是比较典型的一对多关系,Supplier和Product. public class Product { ...

  7. [转]ASP.NET Web API基于OData的增删改查,以及处理实体间关系

    本文转自:http://www.cnblogs.com/darrenji/p/4926334.html 本篇体验实现ASP.NET Web API基于OData的增删改查,以及处理实体间的关系. 首先 ...

  8. Java项目——模拟电话薄联系人增删改查

    该项目模拟了电话本记录联系人的业务功能,用来练习对数据库的增删改查等操作. 菜单类:Menu -- 用来封装主菜单和个选项的子菜单 Person类: Person--联系人的实体类 TelNoteRe ...

  9. 【转载】ASP.NET MVC Web API 学习笔记---联系人增删改查

    本章节简单介绍一下使用ASP.NET MVC Web API 做增删改查.目前很多Http服务还是通过REST或者类似RESP的模型来进行数据操作的.下面我们通过创建一个简单的Web API来管理联系 ...

随机推荐

  1. JQuery 标签之间组合取值

    <body> <div></div> <input type="text" value="first-1" /> ...

  2. SpringBank 开发日志 使用maven构建dubbo服务的可执行jar包

    写这篇日志的时候,我已经完成了这个目标,并且中间经历了一次面试.现在回过头看,已经觉得印象不那么深刻了,果然还是一边思考,一边记录这样最好.但我还是严格要求自己,从新做了梳理,对相关配置进行了整理和说 ...

  3. C#连接Oracle错误:OCIEnvCreate 失败,返回代码为 -1

    处理某些数据需要从Oracle里读取数据 因为数据不多,简单方便直接用 System.Data.OracleClient 添加引用,写sql语句一气呵成,运行立刻报错 从没见过这错误啊… 上网搜索之… ...

  4. 【译】学习JavaScript中提升、作用域、闭包的终极指南

    这似乎令人惊讶,但在我看来,理解JavaScript语言最重要和最基本的概念是理解执行上下文.通过正确学习它,你将很好地学习更多高级主题,如提升,作用域链和闭包.考虑到这一点,究竟什么是"执 ...

  5. C# 之 HttpResponse 类

    Response 对象,派生自HttpResponse 类,该类封装来自 ASP.NET 操作的 HTTP 响应信息.存在于System.Web命名空间下. 注:MIME(Multipurpose I ...

  6. 【AtCoder】AGC031

    A - Colorful Subsequence 答案是 \(\prod_{c = 'a'}^{'z'} (cnt[c] + 1)\) #include <bits/stdc++.h> # ...

  7. python全栈开发day98-DRF

    1.CBV源码流程 2.restful协议 1 所有的数据,不过是通过网络获取的还是操作(增删改查)的数据,都是资源,将一切数据视为资源是REST区别与其他架构风格的最本质属性 2 面向资源架构(RO ...

  8. markdown 语法小结

    1 标题 # 一级标题 ## 二级标题 2  字体加粗和斜体 *斜体* **加粗** 3.引用 > 4.换行 空行 或两个空格+tab 5.无序列表 + 第一个 + 第二个 - 第一个 - 第二 ...

  9. js中slice splice substring substr区别

    https://www.jb51.net/article/62165.htm 1.slice(start,end)  #  字符串 2.splice (位置,删除个数,添加元素)# 针对arrary ...

  10. 51nod1967 路径定向 Fleury

    题目传送门 题解 几乎是Fleury模板题. 一开始我们把图看作无向图,然后对于度为奇数的点增边,使得整个图的所有点都是偶数的. 然后跑一遍欧拉回路 Fleury ,所有的边就定向好了~ 代码 #in ...