HDFS基本工具类的实现

package com.shikun.HdfsTool;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.BlockLocation;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
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 org.apache.hadoop.util.Progressable;

/*
* hdfs平台接口类,批量上传和下载文件
*/
public class HdfsTool {

private FileSystem f = null;
// 初始化相关配置
public HdfsTool() {

//读配置文件
Configuration conf = new Configuration();
try {
f = FileSystem.get(URI.create("/"), conf, "root");
} catch (IOException | InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

/*--------------------文件表面的操作------------------------------------*/
// 循环删除某一文件夹下的所有文件
public void deletersomefile(String path) {
File f = new File(path);
File[] f1 = f.listFiles();
for (File f2 : f1) {
if (f2.isFile() && f2.getName().endsWith(".crc")) {
f2.delete();
} else {
// System.out.println(f2.getAbsolutePath());
if (f2.isDirectory()) {
deletersomefile(f2.getAbsolutePath());
}
}

}

}

// 上传文件到hdfs,sc11本地文件目录,scr2 hdfs文件目录
// 批量上传
public void upload(String src1, String src2) {
try {
// init();
f.copyFromLocalFile(new Path(src1), new Path(src2));
System.out.println("上传成功");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("路径不正确");
}
// 从本地上传到hdfs
}

// 从hdfs下载文件,到本地路径,src2,是hdfs路径,src1,是本地路径
public void download(String src2, String src1) {
try {

f.copyToLocalFile(new Path(src2), new Path(src1));
deletersomefile(src1);

System.out.println("下载成功");
} catch (IllegalArgumentException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("路径不正确");
}
}

// 删除hdfs的某个文件或者目录
public void deletefiles(String src) {
try {
f.delete(new Path(src), true);
System.out.println("删除完成");
} catch (IllegalArgumentException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("路径不存在");
}

}

// 创建文件目录
public void createmkdir(String src) {
try {
f.mkdirs(new Path(src));
System.out.println("创建完成");
} catch (IllegalArgumentException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("输入不合法");
}

}

// 创建文件
public void creatfile(String src) {
try {
FSDataOutputStream fis = f.create(new Path(src), new Progressable() {

@Override
public void progress() {
// TODO Auto-generated method stub
System.out.println(".");
}
});
System.out.println("文件创建完成");
} catch (IllegalArgumentException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//查看某个目录下的文件,并打印出其详细信息
public void listview()
{
FileStatus[] file1;
try {

file1 = f.listStatus(new Path("/bigfile"));
for(FileStatus s:file1)
{
System.out.println("time:"+s.getAccessTime());
System.out.println("group:"+s.getGroup());
System.out.println("blocksize:"+s.getBlockSize());
System.out.println("owner:"+s.getOwner());
}
} catch (IllegalArgumentException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//Path[]list=FileUtil.stat2Paths(file1);
}
/*--------------------文件本身的的操作------------------------------------*/
public void listviewnew(String src)
{
try {
RemoteIterator<LocatedFileStatus> ri=f.listFiles(new Path(src), false);
while(ri.hasNext())
{

LocatedFileStatus file=ri.next();
BlockLocation[] blc=file.getBlockLocations();

for(BlockLocation b:blc)
{

System.out.println("length--"+b.getLength());
System.out.println("name--");
String[] ss=b.getNames();
for(String str:ss)
{
System.out.println(ss);
}
System.out.println("offset--"+b.getOffset());
String hos[]=b.getHosts();
System.out.println("hosname:");
for(String s:hos)
{
System.out.println(s);

}

}
}

} catch (IllegalArgumentException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
//文件过滤操作
public void filterfiles(String regex,String regex1)
{
try {
f.globStatus(new Path(regex),new RegexExcludePathFileter(regex1));
System.out.println("过滤完毕,结果如下");
} catch (IllegalArgumentException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

时间: 2025-01-06 14:42:32

HDFS基本工具类的实现的相关文章

HDFS 工具类

读取HDFS上文件数据 import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.StringWriter; import java.net.URI; import java.util.ArrayList; import java.util.List;

hadoop的dfs工具类一个

开始没搞定插件问题,就弄了个dsf操作类,后面搞定了插件问题,这玩意也就聊胜于无了,还是丢这里算了. 首先是一个配置,ztool.hadoop.properties hadoop.home.dir=G:/hadoop/hadoop-2.4.1 hadoop.user.name=hadoop hadoop.server.ip=192.168.117.128 hadoop.server.hdfs.port=9000 前面两个属性后面代码会有说明的. 属性文件的读取,方法多了,一般用commons-c

Arrays工具类

Arraysd的静态方法能够方便的对数组进行操作,每个方法也加了注释 : 程序: import java.util.*;public class Array{        public static void main(String[] args){                int[]  arr={1,3,4,2};                System.out.println("排序前:");                printArray(arr);//打印原数组

常用工具类(System,Runtime,Date,Calendar,Math)

一.Sy 一个java.lang包中的静态工具类. 三大字段: static PrintStream err "标准"错误输出流. static InputStream in "标准"输入流. static PrintStream out "标准"输出流. 其他常用方法: 描述系统信息: 获取系统属性信息: static Properties getProperties(): (Properties是Hashtable的子类,也就是Map 的子类

iOS 中的正则匹配(工具类)

正则表达式 正则表达式是对字符串操作的一种逻辑公式, 用事先定义好的一些特定字符.及这些特定字符的组合, 组成一个"规则字符串", 这个"规则字符串"用来表达对字符串的一种过滤逻辑, 正则表达式就是用于描述这些规则的工具, 或者说, 正则表达式就是记录文本规则的代码. 在开发中, 我们经常会有查找符合某些复杂规则的字符串的需要, 比如数据校验: 判断用户的输入是否合法(如:用户注册的时候,QQ号码,电话号码,邮箱是否符合要求) 下面让我们先来看看正则匹配常用的一些字

(九十五)音效播放方法和工具类的制作

音效通过AVFoundation框架实现,是通过函数而不是方法,因此需要进行桥接等操作,具体步骤如下. 进行音效播放,首先要得到音效的URL(只能是本地音频),然后转换为音效ID(唯一),通过ID播放音效. [音效播放方法] ①导入框架主头文件 #import <AVFoundation/AVFoundation.h> ②通过Bundle拿到本地音效,然后调用AudioServicesCreateSystemSoundID函数得到音效ID,ID为0代表无效,以此为依据可进行懒加载 @inter

spring endpoint工具类

工具类代码 @Controller public class EndpointDocController {     private final RequestMappingHandlerMapping handlerMapping;     @Autowired     public EndpointDocController(RequestMappingHandlerMapping handlerMapping) {         this.handlerMapping = handler

web常用的工具类总结

数据库的链接的操作类 package utils; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class DBConnection { private static final String DBDRIVER = "com.m

字符串工具类(指定字符串的长度和判断是否为空等方法)

package com.sec.util; /** * 字符串工具类 * @author Administrator * */public class StringUtil { /** * 过滤<,>,\n 字符串的方法 * @param input * @return */ public static String filterHTML(String input){ if(input == null || input.length() == 0){ return input; } input