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) ...
随机推荐
- DOM 遍历-同胞
在 DOM 树中水平遍历 有许多有用的方法让我们在 DOM 树进行水平遍历: siblings() next() nextAll() nextUntil() prev() prevAll() prev ...
- Remove Untagged Images From Docker
I've been playing around a lot with docker. It's awesome, and it creates a whole new world of possib ...
- wx:for修改样式
在获取文字识别数据之后,对数据进行wx:for循环加了边框如图效果: 需求:点击不同边框获取不同文字,再次点击取消选中:选中背景为#999: <view wx:for="{{img_d ...
- c#控件攻略宝典之ListBox控件
ListBox控件的使用: 1)控件属性 Items SelectedItems SelectioModes 2)数据绑定 DataSoure DisplayMember ValueMenber 3) ...
- Git命令补全配置
Git命令补全功能 1.下载下面的文件 https://github.com/sguo421/code/blob/master/git-completion.bash 2.放倒HOME目录下,设置为隐 ...
- Python之argparse模块
argparse 命令行参数解析模块,原optparse已经停止开发,建议替换为argparse 在python2.7后默认加入 parser ArgumentParser默认解析来源sys.argv ...
- 使用AspectCore动态代理
前言 最近越来越多的同学关注到AspectCore,并且提出不少中肯的建议,其中最多的提议是希望能够看到更多的关于AspectCore使用方式的文章和Demo.那么在这篇文章里,我们就来聊聊Aspec ...
- java oop详解
近日来重温了一下java oop的知识.加深了对面向对象的理解.尤其时继承方面.故写一篇博客.记录一下自己的想法和心得 1.面向对象主要分为三大点(封装,继承,多态) 封装的思想促进了类的形成.相比于 ...
- Kaggle初入门
今天成功的进驻kaggle社区了! 所以以后就要跟kaggle上面的各位一起学习啦! 今天十分成功的在tensorflow的环境里面装了一堆库--什么seaborn啊pandas啊都一次过 然后--并 ...
- 《java.util.concurrent 包源码阅读》12 线程池系列之ThreadPoolExecutor 第二部分
接着说worker线程是如何工作的.ThreadPoolExecutor有一个成员类叫Worker,所起到的作用就是线程池worker线程的作用. private final class Worker ...