这里有新鲜出炉的 Java 设计模式,程序狗速度看过来!
Java 程序设计语言
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台(即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称.
本篇文章主要介绍了 JAVA 操作 HDFS 案例的简单实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧
本文介绍了 JAVA 操作 HDFS 案例的简单实现,分享给大家,也给自己做个笔记
Jar 包引入,pom.xml:
将本地文件上传到 hdfs 服务器:
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.8.0</version>
</dependency>
/**
* 上传文件到hdfs上
解析:
* /
@Test
public void upload() throws IOException {
Configuration conf = new Configuration();
conf.set("fs.defaultFS","hdfs:/ / hzq: 9000 ");
FileSystem fs = FileSystem.get(conf);
fs.copyFromLocalFile(new Path(" / home / hzq / jdk1.8.tar.gz "),new Path(" / demo "));
}"
在开发中我没有引入 "core-site.xml" 配置文件,所以在本地调用时使用 conf 进行配置 "conf.set("fs.defaultFS","hdfs://hzq:9000");",下面雷同.
将 hdfs 上文件下载到本地:
/**
* 将hdfs上文件下载到本地
删除 hdfs 上指定文件:
* /
@Test
public void download() throws IOException {
Configuration conf = new Configuration();
conf.set("fs.defaultFS","hdfs:/ / hzq: 9000 ");
FileSystem fs = FileSystem.newInstance(conf);
fs.copyToLocalFile(new Path(" / java / jdk1.8.tar.gz "),new Path(" / home / hzq / "));
}"
/**
* 删除hdfs上的文件
在 hdfs 上创建文件夹:
* @throws IOException
*/
@Test
public void removeFile() throws IOException {
Configuration conf = new Configuration();
conf.set("fs.defaultFS","hdfs://hzq:9000");
FileSystem fs = FileSystem.newInstance(conf);
fs.delete(new Path("/demo/jdk1.8.tar.gz"),true);
}
/**
* 在hdfs更目录下面创建test1文件夹
列出 hdfs 上所有的文件或文件夹:
* @throws IOException
*/
@Test
public void mkdir() throws IOException {
Configuration conf = new Configuration();
conf.set("fs.defaultFS","hdfs://hzq:9000");
FileSystem fs = FileSystem.newInstance(conf);
fs.mkdirs(new Path("/test1"));
}
运行结果:
@Test public void listFiles() throws IOException {
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://hzq:9000");
FileSystem fs = FileSystem.newInstance(conf);
// true 表示递归查找 false 不进行递归查找
RemoteIterator < LocatedFileStatus > iterator = fs.listFiles(new Path("/"), true);
while (iterator.hasNext()) {
LocatedFileStatus next = iterator.next();
System.out.println(next.getPath());
}
System.out.println("----------------------------------------------------------");
FileStatus[] fileStatuses = fs.listStatus(new Path("/"));
for (int i = 0; i < fileStatuses.length; i++) {
FileStatus fileStatus = fileStatuses[i];
System.out.println(fileStatus.getPath());
}
}
结果分析:
"listFiles" 列出的是 hdfs 上所有文件的路径,不包括文件夹.根据你的设置,支持递归查找.
"listStatus" 列出的是所有的文件和文件夹,不支持递归查找.如许递归,需要自己实现.
来源: http://www.phperz.com/article/18/0113/355370.html