Java 封装 HDFS API 操作
代码下载地址:点击下载
一:环境介绍
二:操作包含
创建目录 mkdir(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 操作的更多相关文章
- Hadoop学习记录(3)|HDFS API 操作|RPC调用
HDFS的API操作 URL方式访问 package hdfs; import java.io.IOException; import java.io.InputStream; import java ...
- HDFS API操作实践
本文提供几个简单的实例,来说明如何使用hadoop的java API针对HDFS进行文件上传.创建.重命名.删除操作 本文地址:http://www.cnblogs.com/archimedes/p/ ...
- zookeeper客户端使用第三方(Curator)封装的Api操作节点
1.为什么使用Curator? Curator本身是Netflix公司开源的zookeeper客户端: Curator 提供了各种应用场景的实现封装: curator-framework 提供了f ...
- HDFS api操作
import java.net.URI;import java.util.Iterator;import java.util.Map.Entry; import org.apache.hadoop.c ...
- Hadoop 之 HDFS API操作
1. 文件上传 @Slf4j public class HDFSClient { @Test public void testCopyFromLocalFile() throws Exception{ ...
- Java代码通过API操作HBase的最佳实践
HBase提供了丰富的API.这使得用Java连接HBase非常方便. 有时候大家会使用HTable table=new HTable(config,tablename);的方式来实例化一个HTabl ...
- Java封装Redis常用操作
package com.advance.Redis; import org.apache.log4j.Logger; import org.testng.annotations.Test; impor ...
- zookeeper客户端使用第三方(zkclient)封装的Api操作节点
1.引入依赖 <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</a ...
- HDFS API 操作实例(一) HDFS读写操作
1. 读取HDFS文件 1.1 字符读取HDFS上的文件 Configuration conf = new Configuration(); Path path = new Path(pathstr) ...
随机推荐
- CSS实现自适应不同大小屏幕的背景大图
在网上搜了好多demo:可总有这样那样的一些小瑕疵,试过几次后发现这样效果是最好的 html: <div class='bg'> <img src="image/bk02. ...
- 从ELK到EFK演进
背景 作为中国最大的在线教育站点,目前沪江日志服务的用户包含网校,交易,金融,CCTalk 等多个部门的多个产品的日志搜索分析业务,每日产生的各类日志有好十几种,每天处理约10亿条(1TB)日志,热数 ...
- 强大又简单的响应式框架——Foundation 网格系统
前端框架——Foundation 简介 Foundation 用于开发响应式的 HTML, CSS and JavaScript 框架. Foundation 是一个易用.强大而且 ...
- MUI开发记录——我的考勤
已经好久没有更新技术博客了,因为最近一直在做跨平台web app应用的开发,由于是刚做这个,也没太多经验同大家分享,可我是一个闲不住的人,我还是决定于百忙之中抽空整理一篇,记录下开发历程......— ...
- java模拟登陆功能
package test; import java.util.Scanner; public class Login { static Scanner sc=new Scanner(System.in ...
- [转载] Java实现生产者消费者问题
转载自http://www.cnblogs.com/happyPawpaw/archive/2013/01/18/2865957.html 引言 生产者和消费者问题是线程模型中的经典问题:生产者和消费 ...
- Django 入门案例开发(上)
Django 入门案例开发(中) http://www.cnblogs.com/focusBI/p/7858267.html Django是一个重量级的web开发框架,它提供了很多内部已开发好的插件供 ...
- python paramiko模块 用密钥传输
VM_129_78_suse:/home/remote_paramiko # cat remote.py #!/usr/bin/env python import paramiko linux_cmd ...
- SQLServer2008数据库连接error40错误
在连接SQL Server偶尔会遇到报错,如在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为 ...
- SSM框架开发web项目系列(一) 环境搭建篇
前言 开发环境:Eclipse Mars + Maven + JDK 1.7 + Tomcat 7 + MySQL 主要框架:Spring + Spring MVC + Mybatis 目的:快速上手 ...