代码下载地址:点击下载

一:环境介绍

hadoop:2.6
Ubuntu:15.10
eclipse:3.8.1

二:操作包含

推断某个目录是否存在              isExist(folder);

创建目录                                    mkdir(folder);
删除目录                                    rmr(folder);

列出全部目录                 ls(folder);

递归列出全部目录                      lsr(folder);

上传文件                                        put(local, folder);

下载文件                                        get(folder,local1);

删除文件                                        rm(folder);

显示文件                                        cat(folder);

三:代码演示

package user_thing_tuijian;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils; public class hdfsGYT { private static final String HDFS = "hdfs://127.0.0.1:9000/"; public hdfsGYT(String hdfs, Configuration conf ){
this.hdfsPath = hdfs;
this.conf = conf;
} public hdfsGYT() {
// TODO Auto-generated constructor stub
} private String hdfsPath;
private Configuration conf = new Configuration() ; public static void main(String[] args) throws IOException, URISyntaxException{
hdfsGYT hdfsgyt = new hdfsGYT();
String folder = HDFS + "mr/groom_system/small2.csv";
String local = "/home/thinkgamer/Java/hadoop_shizhan/src/user_thing_tuijian/small2.csv";
String local1 = "/home/thinkgamer/Java/hadoop_shizhan/src/user_thing_tuijian";
//推断某个目录是否存在
//hdfsgyt.isExist(folder);
//创建目录
//hdfsgyt.mkdir(folder);
//删除目录
//hdfsgyt.rmr(folder);
//列出全部目录
//hdfsgyt.ls(folder);
//递归列出全部目录
//hdfsgyt.lsr(folder);
//上传文件
//hdfsgyt.put(local, folder);
//下载文件
//hdfsgyt.get(folder,local1);
//删除文件
//hdfsgyt.rm(folder);
//显示文件
//hdfsgyt.cat(folder);
} //显示文件
private void cat(String folder) throws IOException, URISyntaxException {
// 与hdfs建立联系
FileSystem fs = FileSystem.get(new URI(HDFS),new Configuration());
Path path = new Path(folder);
FSDataInputStream fsdis = null;
System.out.println("cat: " + folder);
try {
fsdis =fs.open(path);
IOUtils.copyBytes(fsdis, System.out, 4096, false);
} finally {
IOUtils.closeStream(fsdis);
fs.close();
}
} //删除文件
private void rm(String folder) throws IOException, URISyntaxException {
//与hdfs建立联系
FileSystem fs = FileSystem.get(new URI(HDFS),new Configuration());
Path path = new Path(folder);
if(fs.deleteOnExit(path)){
fs.delete(path);
System.out.println("delete:" + folder);
}else{
System.out.println("The fiel is not exist!");
}
fs.close();
} //下载文件
private void get(String remote, String local) throws IllegalArgumentException, IOException, URISyntaxException {
// 建立联系
FileSystem fs = FileSystem.get(new URI(HDFS), new Configuration());
fs.copyToLocalFile(new Path(remote), new Path(local));
System.out.println("Get From : " + remote + " To :" + local);
fs.close();
} //上传文件
private void put(String local, String remote) throws IOException, URISyntaxException {
// 建立联系
FileSystem fs = FileSystem.get(new URI(HDFS), new Configuration());
fs.copyFromLocalFile(new Path(local), new Path(remote));
System.out.println("Put :" + local + " To : " + remote);
fs.close();
} //递归列出全部目录
private void lsr(String folder) throws IOException, URISyntaxException {
//与hdfs建立联系
FileSystem fs = FileSystem.get(new URI(HDFS),new Configuration());
Path path = new Path(folder);
//得到该目录下的全部文件
FileStatus[] fileList = fs.listStatus(path);
for (FileStatus f : fileList) {
System.out.printf("name: %s | folder: %s | size: %d\n", f.getPath(), f.isDir() , f.getLen());
try{
FileStatus[] fileListR = fs.listStatus(f.getPath());
for(FileStatus fr:fileListR){
System.out.printf("name: %s | folder: %s | size: %d\n", fr.getPath(), fr.isDir() , fr.getLen());
}
}finally{
continue;
}
}
fs.close();
} //列出全部目录
private void ls(String folder) throws IOException, URISyntaxException {
//与hdfs建立联系
FileSystem fs = FileSystem.get(new URI(HDFS),new Configuration());
Path path = new Path(folder);
//得到该目录下的全部文件
FileStatus[] fileList = fs.listStatus(path);
for (FileStatus f : fileList) {
System.out.printf("name: %s | folder: %s | size: %d\n", f.getPath(), f.isDir() , f.getLen());
}
fs.close();
} //删除目录
private void rmr(String folder) throws IOException, URISyntaxException {
//与hdfs建立联系
FileSystem fs = FileSystem.get(new URI(HDFS),new Configuration());
Path path = new Path(folder);
fs.delete(path);
System.out.println("delete:" + folder);
fs.close();
} //创建目录
public void mkdir(String folder) throws IOException, URISyntaxException {
//与hdfs建立联系
FileSystem fs = FileSystem.get(new URI(HDFS),new Configuration());
Path path = new Path(folder);
if (!fs.exists(path)) {
fs.mkdirs(path);
System.out.println("Create: " + folder);
}else{
System.out.println("it is have exist:" + folder);
}
fs.close();
} //推断某个目录是否存在
private void isExist(String folder) throws IOException, URISyntaxException {
//与hdfs建立联系
FileSystem fs = FileSystem.get(new URI(HDFS),new Configuration());
Path path = new Path(folder);
if(fs.exists(path)){
System.out.println("it is have exist:" + folder);
}else{
System.out.println("it is not exist:" + folder);
}
fs.close();
} }

Java 封装 HDFS API 操作的更多相关文章

  1. Hadoop学习记录(3)|HDFS API 操作|RPC调用

    HDFS的API操作 URL方式访问 package hdfs; import java.io.IOException; import java.io.InputStream; import java ...

  2. HDFS API操作实践

    本文提供几个简单的实例,来说明如何使用hadoop的java API针对HDFS进行文件上传.创建.重命名.删除操作 本文地址:http://www.cnblogs.com/archimedes/p/ ...

  3. zookeeper客户端使用第三方(Curator)封装的Api操作节点

    1.为什么使用Curator? Curator本身是Netflix公司开源的zookeeper客户端: Curator  提供了各种应用场景的实现封装: curator-framework  提供了f ...

  4. HDFS api操作

    import java.net.URI;import java.util.Iterator;import java.util.Map.Entry; import org.apache.hadoop.c ...

  5. Hadoop 之 HDFS API操作

    1. 文件上传 @Slf4j public class HDFSClient { @Test public void testCopyFromLocalFile() throws Exception{ ...

  6. Java代码通过API操作HBase的最佳实践

    HBase提供了丰富的API.这使得用Java连接HBase非常方便. 有时候大家会使用HTable table=new HTable(config,tablename);的方式来实例化一个HTabl ...

  7. Java封装Redis常用操作

    package com.advance.Redis; import org.apache.log4j.Logger; import org.testng.annotations.Test; impor ...

  8. zookeeper客户端使用第三方(zkclient)封装的Api操作节点

    1.引入依赖 <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</a ...

  9. HDFS API 操作实例(一) HDFS读写操作

    1. 读取HDFS文件 1.1 字符读取HDFS上的文件 Configuration conf = new Configuration(); Path path = new Path(pathstr) ...

随机推荐

  1. CSS实现自适应不同大小屏幕的背景大图

    在网上搜了好多demo:可总有这样那样的一些小瑕疵,试过几次后发现这样效果是最好的 html: <div class='bg'> <img src="image/bk02. ...

  2. 从ELK到EFK演进

    背景 作为中国最大的在线教育站点,目前沪江日志服务的用户包含网校,交易,金融,CCTalk 等多个部门的多个产品的日志搜索分析业务,每日产生的各类日志有好十几种,每天处理约10亿条(1TB)日志,热数 ...

  3. 强大又简单的响应式框架——Foundation 网格系统

          前端框架——Foundation     简介 Foundation 用于开发响应式的 HTML, CSS and JavaScript 框架. Foundation 是一个易用.强大而且 ...

  4. MUI开发记录——我的考勤

    已经好久没有更新技术博客了,因为最近一直在做跨平台web app应用的开发,由于是刚做这个,也没太多经验同大家分享,可我是一个闲不住的人,我还是决定于百忙之中抽空整理一篇,记录下开发历程......— ...

  5. java模拟登陆功能

    package test; import java.util.Scanner; public class Login { static Scanner sc=new Scanner(System.in ...

  6. [转载] Java实现生产者消费者问题

    转载自http://www.cnblogs.com/happyPawpaw/archive/2013/01/18/2865957.html 引言 生产者和消费者问题是线程模型中的经典问题:生产者和消费 ...

  7. Django 入门案例开发(上)

    Django 入门案例开发(中) http://www.cnblogs.com/focusBI/p/7858267.html Django是一个重量级的web开发框架,它提供了很多内部已开发好的插件供 ...

  8. python paramiko模块 用密钥传输

    VM_129_78_suse:/home/remote_paramiko # cat remote.py #!/usr/bin/env python import paramiko linux_cmd ...

  9. SQLServer2008数据库连接error40错误

    在连接SQL Server偶尔会遇到报错,如在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为 ...

  10. SSM框架开发web项目系列(一) 环境搭建篇

    前言 开发环境:Eclipse Mars + Maven + JDK 1.7 + Tomcat 7 + MySQL 主要框架:Spring + Spring MVC + Mybatis 目的:快速上手 ...