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();
}
}
}
HDFS基本工具类的实现的更多相关文章
- HDFS 工具类
读取HDFS上文件数据 import java.io.File; import java.io.FileInputStream; import java.io.IOException; import ...
- flink---实时项目--day02-----1. 解析参数工具类 2. Flink工具类封装 3. 日志采集架构图 4. 测流输出 5. 将kafka中数据写入HDFS 6 KafkaProducer的使用 7 练习
1. 解析参数工具类(ParameterTool) 该类提供了从不同数据源读取和解析程序参数的简单实用方法,其解析args时,只能支持单只参数. 用来解析main方法传入参数的工具类 public c ...
- hadoop的dfs工具类一个【原创】
开始没搞定插件问题,就弄了个dsf操作类,后面搞定了插件问题,这玩意也就聊胜于无了,还是丢这里算了. 首先是一个配置,ztool.hadoop.properties hadoop.home.dir=G ...
- Hbase javaAPI(工具类)表的增删改查
建立连接: package Init; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.*; i ...
- Java基础Map接口+Collections工具类
1.Map中我们主要讲两个接口 HashMap 与 LinkedHashMap (1)其中LinkedHashMap是有序的 怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...
- Android—关于自定义对话框的工具类
开发中有很多地方会用到自定义对话框,为了避免不必要的城府代码,在此总结出一个工具类. 弹出对话框的地方很多,但是都大同小异,不同无非就是提示内容或者图片不同,下面这个类是将提示内容和图片放到了自定义函 ...
- [转]Java常用工具类集合
转自:http://blog.csdn.net/justdb/article/details/8653166 数据库连接工具类——仅仅获得连接对象 ConnDB.java package com.ut ...
- js常用工具类.
一些js的工具类 复制代码 /** * Created by sevennight on 15-1-31. * js常用工具类 */ /** * 方法作用:[格式化时间] * 使用方法 * 示例: * ...
- Guava库介绍之实用工具类
作者:Jack47 转载请保留作者和原文出处 欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 本文是我写的Google开源的Java编程库Guava系列之一,主要介 ...
随机推荐
- cad转shapefile文件
private ESRI.ArcGIS.Controls.AxTOCControl axTOCControl1; private ESRI.ArcGIS.Controls.AxLicenseContr ...
- txt文本怎么去除重复项
txt文本怎么去除重复项?做网络推广的朋友经常会遇到这样的问题,txt文本文件里面有许多人名或者电话号码用来发送邮件或者短信,通常有许多是重复的,下面我来介绍两个方法来去除重复项,以人名为范本讲解. ...
- DELPHI XE5 UP2 无真机输出 APP并转换为IPA(实践整理)
1.在Mac上配置开发环境(具体步骤请百度) XCODE5.1+IOS7.1SDK+COMMAND LINE TOOLS 安装PlatformAssistant 买一个真机调试账号(实际测 ...
- 游戏中遇到的BUG
(1)bug描述:战斗中有英雄死亡,一方掉线之后再次上线,仍然可以看到死亡英雄空血条(英雄受到攻击才会显示血条) 解决方案:原来 当前血量小于英雄血量最大值时,证明英雄受到伤害,血条显示为true I ...
- 接上一篇,Springcloud使用feignclient远程调用服务404 ,为什么去掉context-path后,就能够调通
一.问题回顾 如果application.properties文件中配置了 #项目路径 server.servlet.context-path=/pear-cache-service 则feigncl ...
- gets()scanf()有害------c++程序设计原理与实践(进阶篇)
最简单的读取字符串的方式是使用gets(),例如: char a[12]; gets(a); 但gets()和scanf()是有害的,曾经有大约1/4的成功黑客攻击是由于gets()和它的近亲scan ...
- Jmeter_实现Excel文件导出到本地
一般而言,对于页面的“导出”操作,主要经历如下两个操作:①根据数据库的内容,将文件导出到应用服务器上:②将服务器上的文件下载到本地电脑: Jmeter同LoadRunner类似,只能记录服务端与客户端 ...
- 【转】分析.net中的object sender与EventArgs e
源地址:http://blog.csdn.net/feihu19851111/article/details/7523118
- [CQOI2006]凸多边形(半平面交)
很明显是一道半平面交的题. 先说一下半平面交的步骤: 1.用点向法(点+向量)表示直线 2.极角排序,若极角相同,按相对位置排序. 3.去重,极角相同的保留更优的 4.枚举边维护双端队列 5.求答案 ...
- 如何在Qt Creator 创建一个.pri文件
如何在Qt Creator 创建一个.pri文件 2013年10月09日 ⁄ 综合 ⁄ 共 254字 ⁄ 字号 小 中 大 ⁄ 评论关闭 这个问题很少人写,因为比较简单,但是让却让我花了好大功夫才 ...