HDFS中Java的API使用测试
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.Scanner; 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.Path;
import org.apache.hadoop.hdfs.DistributedFileSystem;
import org.apache.hadoop.hdfs.protocol.DatanodeInfo; class TestHDFSFile { // 在hdfs上创建目录
public void CreateFilePath(String hdfspath) throws IOException {
Configuration conf = new Configuration();
FileSystem hdfs = FileSystem.get(conf);
// System.out.println("Upload to " + conf.get("fs.default.name"));
if (hdfs.exists(new Path(hdfspath))) {
System.out.println("文件目录已存在");
} else {
hdfs.mkdirs(new Path(hdfspath));
} // 列出该目录下的所有文件,以便查看
Path parentpath = new Path(hdfspath);
HdfsFileList(parentpath.getParent()); } // 查看某目录下的文件列表
public void HdfsFileList(Path hdfspath) throws IOException {
Configuration conf = new Configuration();
FileSystem hdfs = FileSystem.get(conf);
// System.out.println("Upload to " + conf.get("fs.default.name"));
FileStatus files[] = hdfs.listStatus(hdfspath);
if (files.length == 0) {
System.out.println("该目录下没有任何文件");
} else {
for (FileStatus file : files) {
System.out.println(file.getPath());
}
}
} // 上传本地文件到HDFS
public void UploadFileToHDFS(String localpath, String hdfspath)
throws Exception { Configuration conf = new Configuration();
// conf.addResource(new Path(localPath + "core-site.xml"));
FileSystem hdfs = FileSystem.get(conf);
Path src = new Path(localpath);
Path dst = new Path(hdfspath);
hdfs.copyFromLocalFile(src, dst); // 输出hdfs上目录中的文件列表
HdfsFileList(dst);
} // 创建HDFS文件,并对文件进行些内容
public void CreateFile(String hdfspath) throws Exception {
Configuration conf = new Configuration();
// byte[] buff = "hello world!".getBytes();
Scanner sc = new Scanner(System.in);
System.out.println("请输入一行字符串");
String src = sc.nextLine();// 在控制台获取一行字符串 FileSystem hdfs = FileSystem.get(conf);
Path dst = new Path(hdfspath);
FSDataOutputStream outputStream = null;
try {
outputStream = hdfs.create(dst);
// 将这一行字符串写入文件中
outputStream.writeBytes(src); // write(buff, 0, buff.length);
} catch (Exception e) {
e.printStackTrace(); } finally {
if (outputStream != null) {
outputStream.close();
}
} HdfsFileList(dst.getParent());
} // 重命名HDFS文件 public void RenameFileName(String oldname, String newname) throws Exception { Configuration conf = new Configuration(); FileSystem hdfs = FileSystem.get(conf);
// Path dst = new Path(hdfspath); Path frpath = new Path(oldname);
Path topath = new Path(newname); hdfs.rename(frpath, topath); HdfsFileList(topath.getParent());
} // 刪除HDFS文件或目录
public void DelHDFSFiles(String hdfspath) throws Exception { Configuration conf = new Configuration(); FileSystem hdfs = FileSystem.get(conf);
// Path dst = new Path(hdfspath); Path topath = new Path(hdfspath);
if(!hdfs.exists(topath)){
System.out.println("文件不存在");
return ;
} boolean ok = hdfs.delete(topath, true);
System.out.println(ok ? "删除成功" : "删除失败"); HdfsFileList(topath.getParent());
} // 查看HDFS文件或文件夹里所有文件的最后修改时间
public void GetFileModifyTime(String hdfspath) throws Exception { Configuration conf = new Configuration(); FileSystem hdfs = FileSystem.get(conf);
Path dst = new Path(hdfspath); FileStatus files[] = hdfs.listStatus(dst);
for (FileStatus file : files) {
/*
* System.out.println(file.getPath() + "\t" +
* file.getModificationTime());
*/ System.out.println(file.getPath() + "\t"
+ new Date(file.getModificationTime())); }
} // 查看HDFS文件是否存在
public boolean IsExists(String hdfspath) throws Exception { Configuration conf = new Configuration(); FileSystem hdfs = FileSystem.get(conf);
Path dst = new Path(hdfspath); boolean ok = hdfs.exists(dst);
System.out.println(ok ? "文件存在" : "文件不存在");
return ok;
} // 查看某个文件在HDFS集群的位置
public void FileBlockLocation(String hdfspath) throws Exception { Configuration conf = new Configuration(); FileSystem hdfs = FileSystem.get(conf);
Path dst = new Path(hdfspath); FileStatus fileStatus = hdfs.getFileStatus(dst);
BlockLocation[] blockLocations = hdfs.getFileBlockLocations(fileStatus,
0, fileStatus.getLen());
for (BlockLocation block : blockLocations) {
System.out.println(Arrays.toString(block.getHosts()) + "\t"
+ Arrays.toString(block.getNames()) + "\t"
+ block.getLength());
}
} // 获取HDFS集群上所有节点名称
public void GetHostName() throws Exception { Configuration conf = new Configuration(); DistributedFileSystem hdfs = (DistributedFileSystem) FileSystem
.get(conf);
DatanodeInfo[] dataNodeStats = hdfs.getDataNodeStats(); for (DatanodeInfo dataNode : dataNodeStats) {
System.out.println(dataNode.getHostName() + "\t"
+ dataNode.getName());
}
}
}
HDFS中Java的API使用测试的更多相关文章
- HDFS中JAVA API的使用
HDFS中JAVA API的使用 HDFS是一个分布式文件系统,既然是文件系统,就可以对其文件进行操作,比如说新建文件.删除文件.读取文件内容等操作.下面记录一下使用JAVA API对HDFS中的 ...
- 大数据(5) - HDFS中的常用API操作
一.安装java 二.IntelliJ IDEA(2018)安装和破解与初期配置 参考链接 1.进入官网下载IntelliJ IDEA https://www.jetbrains.com/idea/d ...
- [转]HDFS中JAVA API的使用
HDFS是一个分布式文件系统,既然是文件系统,就可以对其文件进行操作,比如说新建文件.删除文件.读取文件内容等操作.下面记录一下使用JAVA API对HDFS中的文件进行操作的过程. 对分HDFS中的 ...
- hadoop系列二:HDFS文件系统的命令及JAVA客户端API
转载请在页首明显处注明作者与出处 一:说明 此为大数据系列的一些博文,有空的话会陆续更新,包含大数据的一些内容,如hadoop,spark,storm,机器学习等. 当前使用的hadoop版本为2.6 ...
- Hadoop(五):HDFS的JAVA API基本操作
HDFS的JAVA API操作 HDFS在生产应用中主要是客户端的开发,其核心步骤是从HDFS提供的api中构造一个HDFS的访问客户端对象,然后通过该客户端对象操作(增删改查)HDFS上的文件. 主 ...
- 使用HDFS客户端java api读取hadoop集群上的信息
本文介绍使用hdfs java api的配置方法. 1.先解决依赖,pom <dependency> <groupId>org.apache.hadoop</groupI ...
- HDFS的Java API
HDFS Java API 可以用于任何Java程序与HDFS交互,该API使我们能够从其他Java程序中利用到存储在HDFS中的数据,也能够使用其他非Hadoop的计算框架处理该数据 为了以编程方式 ...
- Hadoop之HDFS(三)HDFS的JAVA API操作
HDFS的JAVA API操作 HDFS 在生产应用中主要是客户端的开发,其核心步骤是从 HDFS 提供的 api中构造一个 HDFS 的访问客户端对象,然后通过该客户端对象操作(增删改查)HDFS ...
- Java日期时间API系列13-----Jdk8中java.time包中的新的日期时间API类,时间类转换,Date转LocalDateTime,LocalDateTime转Date等
从前面的系列博客中可以看出Jdk8中java.time包中的新的日期时间API类设计的很好,但Date由于使用仍非常广泛,这就涉及到Date转LocalDateTime,LocalDateTime转D ...
随机推荐
- CSS 笔记五(Combinators/Pseudo-classes/Pseudo-elements)
CSS Combinators Four different combinators in CSS3 descendant selector (space) child selector (>) ...
- 02-FPGA设计流程介绍——小梅哥FPGA设计思想与验证方法视频教程配套文档
芯航线——普利斯队长精心奉献 课程目标: 1.了解并学会FPGA开发设计的整体流程 2.设计一个二选一选择器并进行功能仿真.时序仿真以及板级验证 实验平台:芯航线FPGA开发板.杜邦线 实验内容: 良 ...
- CI框架多个表前缀,如何使用框架语句querybuilder
最近用CI框架遇到一个问题.2个前提条件: 1.数据库设计不规范,有的有表前缀(如:ck_table1),有的没有(如:table2)或者表前缀不一样: 2.数据库操作又想使用数据库操作语句query ...
- WebClient与WebRequest差异
WebRequst的使用 WebClient和HttpWebRequst是用来获取数据的2种方式,在我的这篇数据访问(2)中主要是讲的WebClient的使用,一般而言,WebClient更倾向于“按 ...
- [转]使用xcode4 workspace 多个project协同工作
转载地址:http://erlangprogram.com/use-xcode4-workspace 一般的某个应用单独新建一个 project 就可以了,然后把所有的程序文件都放在里面,这个可以 ...
- 深入理解C++的动态绑定和静态绑定【转】
转自:http://blog.csdn.net/chgaowei/article/details/6427731 为了支持c++的多态性,才用了动态绑定和静态绑定.理解他们的区别有助于更好的理解多态性 ...
- javascript实现动态侧边栏
总的来说就是利用 鼠标悬停onmouseover 和 鼠标移除onmouseout 这两个时间来完成的. 首先是HTML 结构 <body> <div id="div ...
- CentOS 下开启.htaccess
一般来说,htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置.通过htaccess文件,可以帮我们实现: 网页301重定向.自定义404错误页面.改变文件扩展名.允许 ...
- 发布网站详细步骤(.Net)
(i)打开需要发布的网站 右键需要发布的项目 点击下拉框新建配置文件,输入配置文件名称,点击确定,下一步 发布方法选文件系统,目标位置:项目的根目录 配置选Release 点击发布 (ii) 打开ii ...
- Intellij 图标介绍及配置文件常识
图标 参数名称 含义 默认值 -Xms 初始堆大小 物理内存的1/64(<1GB) 默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM就会增大堆直到-Xm ...