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

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

maven配置

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>hadoopStudy</groupId>
<artifactId>demo</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging> <name>demo</name>
<url>http://maven.apache.org</url> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency> <dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>3.0.0</version>
</dependency> <dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>3.0.0</version>
</dependency> <dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>3.0.0</version>
</dependency>
</dependencies>
</project>

代码实现

package hadoopStudy;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.LocatedFileStatus;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.RemoteIterator; import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException; public class HdfsUtil {
private FileSystem fs;
HdfsUtil(String user){
Configuration cfg = new Configuration();
URI uri = null;
try {
uri = new URI("hdfs://localhost:9000");
} catch (URISyntaxException e) {
e.printStackTrace();
}
try {
// 根据配置文件,实例化成DistributedFileSystem
fs = FileSystem.get(uri, cfg, user); // 得到fs句柄
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
} /**
* 上传文件
*/
public void upload(String src, String dst){
try {
// 上传
fs.copyFromLocalFile(new Path(src), new Path(dst));
} catch (IOException e) {
e.printStackTrace();
}
} /**
* 下载文件
*/
public void download(String src, String dst){
try {
// 下载
fs.copyToLocalFile(new Path(src), new Path(dst));
} catch (IOException e) {
e.printStackTrace();
}
} /**
* 创建文件夹
*/
public void mkdir(String dir){
try {
fs.mkdirs(new Path(dir));
} catch (IOException e) {
// 创建目录
e.printStackTrace();
}
} /**
* 删除文件
*/
public void delete(String name, boolean recursive){
try {
fs.delete(new Path(name), recursive);
} catch (IOException e) {
e.printStackTrace();
}
} /**
* 重命名
*/
public void rename(String source, String dst){
try {
fs.rename(new Path(source), new Path(dst));
} catch (IOException e) {
e.printStackTrace();
}
} /**
* 列出文件信息
*/
public void list(String dir, boolean recursive){
try {
RemoteIterator<LocatedFileStatus> iter = fs.listFiles(new Path(dir), recursive);
while (iter.hasNext()){
LocatedFileStatus file = iter.next();
System.out.println(file.getPath().getName());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

小结

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. Javascript中函数提升和变量提升

    词法分析 词法分析方法: js运行前有一个类似编译的过程即词法分析,词法分析主要有三个步骤: 分析参数 再分析变量的声明 分析函数说明 具体步骤如下: 函数在运行的瞬间,生成一个活动对象(Active ...

  2. [转] 2016 JavaScript 发展现状大调查

    有人认为JavaScript是最好的语言,有人认为它一团糟.可按照C++之父的话来讲: 世界上只有两种编程语言:一种是天天被人喷的,另一种是没人用的. 不论你喜欢承认与否,JavaScript已经一天 ...

  3. springboot1.5.4 集成cxf完整实例

    WebService 服务端 添加依赖 <?xml version="1.0" encoding="UTF-8"?> <project xml ...

  4. MySQL常用引擎的锁机制

    一.引言                                                                                                 ...

  5. 大数据——hbase

    进入hbase hbase shell 部分命令清单 查询服务器状态   status 查询hbase版本   version 1. 创建一个表 create 'table1', 'tab1_id', ...

  6. Python学习(十七)—— 数据库(二)

    转载自http://www.cnblogs.com/linhaifeng/articles/7356064.html 一. 数据库管理软件的由来 基于我们之前所学,数据要想永久保存,都是保存于文件中, ...

  7. appium---第三个脚本,进行模拟登陆

    我这边模拟的是第三方QQ登陆 刚开始顺风顺水,启动--我的--点击头像--跳转登陆--点击QQ登陆,以上都可以通过id寻找,因为都是同一个包名下,肯定有id,如果没有,一定是技术忘记了 ..... 然 ...

  8. L3-021 神坛 (30 分) 计算几何

    在古老的迈瑞城,巍然屹立着 n 块神石.长老们商议,选取 3 块神石围成一个神坛.因为神坛的能量强度与它的面积成反比,因此神坛的面积越小越好.特殊地,如果有两块神石坐标相同,或者三块神石共线,神坛的面 ...

  9. day38 mycql 初识概念,库(增删改查),表(增删改)以及表字段(增删改查),插入更新操作

    在Navicat中把已经生成的表逆向成模型 数据库上,右键-逆向数据库到模型 ego笔记: 增删改查 文件夹(库) 增 create database day43 charset utf8; 改 al ...

  10. day19 正则,re模块

    http://www.cnblogs.com/Eva-J/articles/7228075.html  所有常用模块的用法 正则的规则: 在一个字符组里面枚举合法的所有字符,字符组里面的任意一个字符和 ...