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. k8s中的api server的ca证书,可以和front proxy ca证书一样么?

    答案是: 绝对不可以! 因为请求先验证的是 --requestheader-client-ca-file CA 然后才是--client-ca-file. . 那获取的用户名就会通不过了. 所以会影响 ...

  2. context日志

    class Program { static void Main(string[] args) { List<wolf_example> Listw; using (var ctx = n ...

  3. Not running in a hosted service or the Development Fabric

    今天尝试在azure上发布网站后,无法正常访问 本地调试也提示: Not running in a hosted service or the Development Fabric 谷歌百度半天… 最 ...

  4. Android设备一对多录屏直播--(UDP组播连接,Tcp传输)

    原文:https://blog.csdn.net/sunmmer123/article/details/82734245 近期需要学习流媒体知识,做一个Android设备相互投屏Demo,因此找到了这 ...

  5. Ubuntu下使用Evernote

    Ubuntu下安装使用Evernote http://blog.csdn.net/yangzhuoluo/article/details/8118996 http://blog.csdn.net/ya ...

  6. 【AtCoder】ARC073

    ARC 073 C - Sentou 直接线段覆盖即可 #include <bits/stdc++.h> #define fi first #define se second #defin ...

  7. rem布局js设置,设置网页文档参考字体闭包函数

    (function (doc, win) { var docEl = doc.documentElement, resizeEvt = 'orientationchange' in window ? ...

  8. C#操作xml SelectNodes,SelectSingleNode总是返回NULL

    SelectNodes,SelectSingleNode总是返回NULL 原文地址:http://www.cnblogs.com/linlf03/archive/2011/11/30/2268705. ...

  9. python生成随机日期字符串

    python生成随机日期字符串 生成随机的日期字符串,用于插入数据库. 通过时间元组设定一个时间段,开始和结尾时间转换成时间戳. 时间戳中随机取一个,再生成时间元组,再把时间元组格式化输出为字符串 # ...

  10. net core体系-web应用程序-4asp.net core2.0 项目实战(1)-5项目数据库操作封装操作-EF框架

    EF框架有三种基本的方式:DB First(数据库优先),Model First(模型优先),Code First(代码优先). Entity Framework4.1之前EF支持“Database  ...