package com.dj.hadoop;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URI;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.util.Progressable;
/**
* @description hdfs文件操作
* @author dj
* @date 2012-10-10
*/
public class FileHandlerTest {
public static String basePath = "hdfs://192.168.10.166:54310";
public static String fileRootPath = basePath
+ "/home/hadoop/data/hadoopdata";
public static void uploadLocalFileToHDFS(File localFile, Path destPath)
throws Exception {
Configuration config = new Configuration();
FileSystem.setDefaultUri(config, new URI(basePath));
FileSystem hdfs = FileSystem.get(config);
// Path dst = new Path(fileRootPath,destPath);
// hdfs.copyFromLocalFile(src, dst);
FSDataOutputStream out = hdfs.create(destPath,new Progressable() {
@Override
public void progress() {
System.out.println("文件进度");
}
});
InputStream in = new BufferedInputStream(new FileInputStream(localFile));
IOUtils.copy(in, out);
hdfs.close();
}
/**
* 文件下载
* @param destPath
* @param localDir
* @throws Exception
*/
public static void downloadFileFromHDFS(Path destPath,File localDir) throws Exception {
Configuration config = new Configuration();
FileSystem.setDefaultUri(config, new URI(basePath));
FileSystem hdfs = FileSystem.get(config);
if (hdfs.exists(destPath)) {
FSDataInputStream in = hdfs.open(destPath);
FileStatus stat = hdfs.getFileStatus(destPath);
byte[] buffer = new byte[Integer.parseInt(String.valueOf(stat.getLen()))];
in.readFully(0, buffer);
in.close();
hdfs.close();
IOUtils.write(buffer, new FileOutputStream(localDir+"/"+destPath.getName()));
}
}
/**
* 删除文件
* @param destPath
* @throws Exception
*/
public static boolean deleteFile(Path destPath)throws Exception {
Configuration config = new Configuration();
FileSystem.setDefaultUri(config, new URI(basePath));
FileSystem hdfs = FileSystem.get(config);
if (hdfs.exists(destPath)) {
return hdfs.delete(destPath,true);
}
return false;
}
public static void listAll(String dir) throws Exception {
Configuration config = new Configuration();
FileSystem.setDefaultUri(config, new URI(basePath));
FileSystem fs = FileSystem.get(config);
FileStatus[] stats = fs.listStatus(new Path(basePath,dir));
for (int i = 0; stats != null && i < stats.length; ++i) {
// System.out.println(ToStringBuilder.reflectionToString(stats[i]));
if (!stats[i].isDir()) {
// regular file
System.out.println("文件:"+stats[i].getPath().toString()+"===="+stats[i].getGroup());
} else if (stats[i].isDir()) {
// dir
System.out.println("文件夹:"+stats[i].getPath().toString()+"===="+stats[i].getGroup());
}
}
fs.close();
}
public static void createDirectory(String directoryName) throws Exception {
Configuration config = new Configuration();
FileSystem.setDefaultUri(config, new URI(basePath));
FileSystem fs = FileSystem.get(config);
System.out.println(ToStringBuilder.reflectionToString(fs));
fs.mkdirs(new Path(fileRootPath, directoryName));
fs.close();
}
public static void deleteDirectory(String directoryName) throws Exception {
Configuration config = new Configuration();
FileSystem.setDefaultUri(config, new URI(basePath));
FileSystem fs = FileSystem.get(config);
fs.delete(new Path(fileRootPath, directoryName),true);
fs.close();
}
public static void main(String[] args) throws Exception {
String directoryName = "books";
// 【1】创建文件夹
createDirectory(directoryName);
// 【2】 删除文件夹
// deleteDirectory(directoryName);
//【3】 显示文件
// listAll("/home/hadoop/data/hadoopdata/");
//【4】 文件上传
File file = new File("G:/apiqianyi/ap2last_tmp.txt");
Path destPath = new Path(fileRootPath,directoryName+"/"+file.getName());
// uploadLocalFileToHDFS(file, destPath);
//【5】文件下载
// downloadFileFromHDFS(destPath, new File("G:/"));
//【6】删除文件
boolean flag = deleteFile(destPath);
System.out.println(flag);
}
}
分享到:
相关推荐
hadoop测试(1)---HDFS文件操作 完整测试代码, 相关文章:http://www.cnblogs.com/yinpengxiang/archive/2011/07/03/2096605.html
1.编写测试方法,设置文件副本数量 2.将hdfs-site.xml拷贝到resources下,设置副本数为1 3.参数的优先级
3.1 HDFS 客户端环境准备 3.2.1 HDFS 文件上传(测试参数优先级) 3.2.2 HDFS 文件下载 3.2.3 HDFS 文件夹删除 3.2.4
第1章 HDFS HA及解决方案 1.1 HDFS系统架构 1.2 HA定义 1.3 HDFS HA原因分析及应对措施 1.3.1 可靠性 1.3.2 可维护性 1.4 现有HDFS HA解决方案 1.4.1 Hadoop的元数据备份方案 1.4.2 Hadoop的SecondaryNameNode方案 ...
4、HDFS-java操作类HDFSUtil及junit测试(HDFS的常见操作以及HA环境的配置) 网址:https://blog.csdn.net/chenwewi520feng/article/details/130334620 本文编写了java对HDFS的常见操作,并且均测试通过。 其功能...
所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!Linux系统是一个免费使用和自由传播的类Unix操作系统,基于POSIX和UNIX的多用户、多任务、支持多...
Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错...
我正在测试并慢慢开发 P2P 流协议的包装器,以将数据存储在 HDFS 上。 目前,包装器允许用户生成随机字节数组并将其存储到用户指定的具有可自定义块大小的文件中。 流式数据写入 HDFS 文件系统,计算每个数据块的...
039 HDFS文件系统读写流程及HDFS API两种方式读取文件 040 详解HDFS API之FileSystem方式基本操作二 041 讲解分析Configuration和FileSystem类源代码 042 引出HDFS实际应用场景之合并文件和使用getmerge命令并查看...
- 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审...下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
附件包括一个数据文件(csv文件,包括92168条记录)和一个包含操作命令的txt文件,用于Hive的学习。 其中csv文件可以上传到HDFS构建测试数据,txt文件给出了相关的操作命令。
本依赖包在Loadrunner 11中测试通过,由于Loadrunner 11支持的是JDK1.6版本,而hadoop 2.6支持的也是JDK1.6版本,所以本文件中的Jar包主要是从hadoop 2.6.0中抽取。
该项目同时提供CLI工具和API,以编程方式访问以查找比特定时间戳更旧的文件,并根据配置的策略对这些文件进行操作。 它经过高度优化,可与HDFS细节配合使用,并已在大型HDFS设置上进行了测试。 即将推出..有关API...
基于Hadoop生态框架,使用hdfs存储系统资料,Hbase划分数据信息,系统针对司机、用户、管理员设计了不同的系统操作功能和交互页面 - -------- 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设...
:通过Spark API的Hdfs文件操作(拉皮的RDD和SparkContext)。 :在左右包装,用于常规数据挖掘日期操作。 :Spark自定义监视/记录器和kpi验证器。 与Spark 2.x兼容HdfsHelper: 方法的完整列表可在。 包含与文件...
12-1 Bucket管理模块开发 12-2 HDFS和HBASE操作类1 12-3 HDFS和HBASE操作类2 12-4 Hos文件管理模块实体类开发 12-5 Hos创建删除Bucket方法开发 12-6 Hos上传文件方法开发 12-7 Hos获取文件方法开发 12-8 Hos删除...
对WebHDFS v3.2.1核心操作子集进行了全面测试 创建=写入文件 from aiowebhdfs import WebHdfsAsyncClient client = WebHdfsAsyncClient ( host = 'namenode.local' , port = 8443 , user = 'spark' , kerberos_token...
2021-2022学年第一学期期中考试《云计算及应用》 1、 云计算有哪些部暑类型?并分别分析各类型的基本概念及特点。(15分) 2、 简述分析云计算的3种服务模式及其功能。(15分) 3、 简述云计算的基本概念和技术应用特点。...
HDFS 的直接编程控制和运行 map reduce 作业 - 所有单元测试都从 IDE 运行,该项目内置了 hadoop 配置并在 git 控制下。 通过实现 Web REST API 客户端将文件上传到 HDFS。 异步文件上传(在撰写本文时仅实现 ...