3.1常用类

       3.1.1Configuration

Hadoop配置文件的管理类,该类的对象封装了客户端或者服务器的配置(配置集群时,所有的xml文件根节点都是configuration)

创建一个Configuration对象时,其构造方法会默认加载hadoop中的两个配置文件,分别是hdfs-site.xml以及core-site.xml,这两个文件中会有访问hdfs所需的参数值,主要是fs.default.name,指定了hdfs的地址,有了这个地址客户端就可以通过这个地址访问hdfs了。即可理解为configuration就是hadoop中的配置信息。

 

     3.1.2 FileSystem

该类的对象是一个文件系统对象,对HDFS中的文件进行的一系列操作,如创建等

 

      3.1.3FileStatus

获取文件或者文件夹的元信息!比如:文件路径,文件大小,文件所有者,所在的块大小,文件修改时间,备份数量,权限等!

 

       3.1.4FSDataInputStream

输入流对象! 可以将HDFS中的文件或者文件夹读取到本地!

 

     3.1.5FSDataOutputStream

输出流对象! 可以将本地的文件或者文件夹上传到HDFS中!

 

     3.1.6构建工程

指定工程路径

框架结构:

导入依赖节点

<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.8.</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.8.</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.8.</version>
</dependency>

查询文件信息

// 查询文件信息
private static void catFile() throws IOException, FileNotFoundException {
// TODO Auto-generated method stub
// 指定集群当中主机的IP+端口
String uri = "hdfs://192.168.77.99:9000";
// 加载Hadoop的配置文件
Configuration con = new Configuration();
// 创建一个可以操作的HDFS对象
FileSystem fileSystem = FileSystem.get(URI.create(uri), con);
FileStatus[] listStatus = fileSystem.listStatus(new Path("/input/"));
for (FileStatus fileStatus : listStatus) {
/**
* 快捷键Syso
*/
System.out.print("file文件信息------》" + fileStatus);
} /**
* 获取单个文件
*/ /**
* FileStatus fileStatus = fileSystem.getFileStatus(new Path(
* "input/file1.txt")); System.out.println(fileStatus);
*/
}

查询文件内容

public static void getFile(String fileName) throws Exception {
// 指定集群中的主机IP+端口号
String uri = "hdfs://192.168.77.99:9000";
// 加载Hadoop的配置文件
Configuration con = new Configuration();
// 创建一个可以操作的HDFS对象
FileSystem fileSystem = FileSystem.get(URI.create(uri), con);
// 获取指定的文件
FSDataInputStream open = fileSystem.open(new Path(fileName));
// 将文件的内容装载到BufferedReader对象中去
BufferedReader reader = new BufferedReader(new InputStreamReader(open));
String line = "";
// 循环读取文件内容
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
// 关闭资源
reader.close();
open.close();
fileSystem.close();
}

创建一个空的文件

public static void createNewFile(String fileName) throws Exception {
// 指定集群中的主机IP+端口号
String uri = "hdfs://192.168.77.99:9000";
// 加载Hadoop的配置文件
Configuration con = new Configuration();
// 创建一个可以操作的HDFS对象
FileSystem fileSystem = FileSystem.get(URI.create(uri), con);
if (fileSystem.exists(new Path(fileName))) {
System.out.println("文件已经存在");
} else {
boolean createNewFile = fileSystem
.createNewFile(new Path(fileName));
if (createNewFile) {
System.out.println("成功");
} else {
System.out.println("失败");
}
}
fileSystem.close();
}

在新创建的文件夹写入内容

public static void createFile(String fileName) throws Exception {
// 指定集群中的主机IP+端口号
String uri = "hdfs://192.168.77.99:9000";
// 加载Hadoop的配置文件
Configuration con = new Configuration();
// 创建一个可以操作的HDFS对象
FileSystem fileSystem = FileSystem.get(URI.create(uri), con);
if (fileSystem.exists(new Path(fileName))) {
System.out.println("文件已经存在");
} else {
FSDataOutputStream create = fileSystem.create(new Path(fileName));
String str = "老黑今天又黑了";
create.write(str.getBytes());
create.flush();
create.close();
}
fileSystem.close();
}

创建文件夹

public static void mkdirFile(String fileName) throws Exception {
// 指定集群中的主机IP+端口号
String uri = "hdfs://192.168.77.99:9000";
// 加载Hadoop的配置文件
Configuration con = new Configuration();
// 创建一个可以操作的HDFS对象
FileSystem fileSystem = FileSystem.get(URI.create(uri), con);
boolean mkdirs = fileSystem.mkdirs(new Path(fileName));
if (mkdirs) {
System.out.println("成功!");
} else {
System.out.println("失败!");
}
fileSystem.close();
}

重名文件的名字

public static void renameFile(String ordername, String newname)
throws Exception {
// 指定集群中的主机IP+端口号
String uri = "hdfs://192.168.77.99:9000";
// 加载Hadoop的配置文件
Configuration con = new Configuration();
// 创建一个可以操作的HDFS对象
FileSystem fileSystem = FileSystem.get(URI.create(uri), con);
boolean rename = fileSystem.rename(new Path(ordername), new Path(
newname));
if (rename) {
System.out.println("成功!");
} else {
System.out.println("失败!");
}
fileSystem.close();
}

删除文件夹

@SuppressWarnings("deprecation")
public static void deleteFile(String filename) throws Exception {
// 指定集群中的主机IP+端口号
String uri = "hdfs://192.168.77.99:9000";
// 加载Hadoop的配置文件
Configuration con = new Configuration();
// 创建一个可以操作的HDFS对象
FileSystem fileSystem = FileSystem.get(URI.create(uri), con); boolean delete = fileSystem.delete(new Path(filename));
if (delete) {
System.out.println("成功!");
} else {
System.out.println("失败!");
}
fileSystem.close();
}

上传文件 Windows上传到HDFS上

public static void fromFile(String localName, String fromName)
throws Exception {
// 指定集群中的主机IP+端口号
String uri = "hdfs://192.168.77.99:9000";
// 加载Hadoop的配置文件
Configuration con = new Configuration();
// 创建一个可以操作的HDFS对象
FileSystem fileSystem = FileSystem.get(URI.create(uri), con);
fileSystem.copyFromLocalFile(new Path(localName), new Path(fromName));
fileSystem.close();
}

从hdfs下载到Windows

    public static void downLoad(String defsFile,String localFile) throws Exception {
String uri = "hdfs://192.168.77.99:9000";
// 加载hadoop配置文件
Configuration con = new Configuration();
// 创建一个可以操作HDFS对象
FileSystem fileSystem = FileSystem.get(URI.create(uri), con);
fileSystem.copyToLocalFile(new Path(defsFile),new Path (localFile));
fileSystem.close(); }

注意:要记得调用方法

完整的代码结构--各种操作的方法

package com.hdfs;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URI; 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; public class HDFS { public static void main(String[] args) throws Exception {
// catFile(); // getFile("/input/file1.txt");// 查询单个文件信息 // createNewFile("/input/file3.txt");
// createFile("/input/file4.txt");
// mkdirFile("/MKDIRS");//创建文件夹
// renameFile("/input/file5.txt","/input/file4.txt");//重命名文件的名字
//deleteFile("/MKDIRS");// 删除文件夹
//fromFile("C:\\Users\\70424\\Desktop\\1.txt","/input");//上传文件Windows到HDFS上
downLoad("/input/file1.txt","C:\\Users\\70424\\Desktop");//从hdfs下载到Windows
} // 查询文件信息
private static void catFile() throws IOException, FileNotFoundException {
// TODO Auto-generated method stub
// 指定集群当中主机的IP+端口
String uri = "hdfs://192.168.77.99:9000";
// 加载Hadoop的配置文件
Configuration con = new Configuration();
// 创建一个可以操作的HDFS对象
FileSystem fileSystem = FileSystem.get(URI.create(uri), con);
FileStatus[] listStatus = fileSystem.listStatus(new Path("/input/"));
for (FileStatus fileStatus : listStatus) {
/**
* 快捷键Syso
*/
System.out.print("file文件信息------》" + fileStatus);
} /**
* 获取单个文件
*/ /**
* FileStatus fileStatus = fileSystem.getFileStatus(new Path(
* "input/file1.txt")); System.out.println(fileStatus);
*/
} // 查询文件内容
public static void getFile(String fileName) throws Exception {
// 指定集群中的主机IP+端口号
String uri = "hdfs://192.168.77.99:9000";
// 加载Hadoop的配置文件
Configuration con = new Configuration();
// 创建一个可以操作的HDFS对象
FileSystem fileSystem = FileSystem.get(URI.create(uri), con);
// 获取指定的文件
FSDataInputStream open = fileSystem.open(new Path(fileName));
// 将文件的内容装载到BufferedReader对象中去
BufferedReader reader = new BufferedReader(new InputStreamReader(open));
String line = "";
// 循环读取文件内容
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
// 关闭资源
reader.close();
open.close();
fileSystem.close();
} // 创建一个空的文件
public static void createNewFile(String fileName) throws Exception {
// 指定集群中的主机IP+端口号
String uri = "hdfs://192.168.77.99:9000";
// 加载Hadoop的配置文件
Configuration con = new Configuration();
// 创建一个可以操作的HDFS对象
FileSystem fileSystem = FileSystem.get(URI.create(uri), con);
if (fileSystem.exists(new Path(fileName))) {
System.out.println("文件已经存在");
} else {
boolean createNewFile = fileSystem
.createNewFile(new Path(fileName));
if (createNewFile) {
System.out.println("成功");
} else {
System.out.println("失败");
}
}
fileSystem.close();
} // 在新创建的文件夹写入内容
public static void createFile(String fileName) throws Exception {
// 指定集群中的主机IP+端口号
String uri = "hdfs://192.168.77.99:9000";
// 加载Hadoop的配置文件
Configuration con = new Configuration();
// 创建一个可以操作的HDFS对象
FileSystem fileSystem = FileSystem.get(URI.create(uri), con);
if (fileSystem.exists(new Path(fileName))) {
System.out.println("文件已经存在");
} else {
FSDataOutputStream create = fileSystem.create(new Path(fileName));
String str = "老黑今天又黑了";
create.write(str.getBytes());
create.flush();
create.close();
}
fileSystem.close();
} // 创建文件夹
public static void mkdirFile(String fileName) throws Exception {
// 指定集群中的主机IP+端口号
String uri = "hdfs://192.168.77.99:9000";
// 加载Hadoop的配置文件
Configuration con = new Configuration();
// 创建一个可以操作的HDFS对象
FileSystem fileSystem = FileSystem.get(URI.create(uri), con);
boolean mkdirs = fileSystem.mkdirs(new Path(fileName));
if (mkdirs) {
System.out.println("成功!");
} else {
System.out.println("失败!");
}
fileSystem.close();
} // 重名文件的名字
public static void renameFile(String ordername, String newname)
throws Exception {
// 指定集群中的主机IP+端口号
String uri = "hdfs://192.168.77.99:9000";
// 加载Hadoop的配置文件
Configuration con = new Configuration();
// 创建一个可以操作的HDFS对象
FileSystem fileSystem = FileSystem.get(URI.create(uri), con);
boolean rename = fileSystem.rename(new Path(ordername), new Path(
newname));
if (rename) {
System.out.println("成功!");
} else {
System.out.println("失败!");
}
fileSystem.close();
} // 删除文件夹
@SuppressWarnings("deprecation")
public static void deleteFile(String filename) throws Exception {
// 指定集群中的主机IP+端口号
String uri = "hdfs://192.168.77.99:9000";
// 加载Hadoop的配置文件
Configuration con = new Configuration();
// 创建一个可以操作的HDFS对象
FileSystem fileSystem = FileSystem.get(URI.create(uri), con); boolean delete = fileSystem.delete(new Path(filename));
if (delete) {
System.out.println("成功!");
} else {
System.out.println("失败!");
}
fileSystem.close();
} // 上传文件 Windows上传到HDFS上
public static void fromFile(String localName, String fromName)
throws Exception {
// 指定集群中的主机IP+端口号
String uri = "hdfs://192.168.77.99:9000";
// 加载Hadoop的配置文件
Configuration con = new Configuration();
// 创建一个可以操作的HDFS对象
FileSystem fileSystem = FileSystem.get(URI.create(uri), con);
fileSystem.copyFromLocalFile(new Path(localName), new Path(fromName));
fileSystem.close();
}
//从hdfs下载到Windows
public static void downLoad(String defsFile,String localFile) throws Exception {
String uri = "hdfs://192.168.77.99:9000";
// 加载hadoop配置文件
Configuration con = new Configuration();
// 创建一个可以操作HDFS对象
FileSystem fileSystem = FileSystem.get(URI.create(uri), con);
fileSystem.copyToLocalFile(new Path(defsFile),new Path (localFile));
fileSystem.close(); } }

HDFS API编程的更多相关文章

  1. 【HDFS API编程】从本地拷贝文件,从本地拷贝大文件,拷贝HDFS文件到本地

    接着之前继续API操作的学习 CopyFromLocalFile: 顾名思义,从本地文件拷贝 /** * 使用Java API操作HDFS文件系统 * 关键点: * 1)create Configur ...

  2. 【HDFS API编程】查看HDFS文件内容、创建文件并写入内容、更改文件名

    首先,重点重复重复再重复: /** * 使用Java API操作HDFS文件系统 * 关键点: * 1)创建 Configuration * 2)获取 FileSystem * 3)...剩下的就是 ...

  3. 【HDFS API编程】jUnit封装-改写创建文件夹

    首先:什么是jUnit  回顾: https://www.cnblogs.com/Liuyt-61/p/10374732.html 上一节我们知道: /** * 使用Java API操作HDFS文件系 ...

  4. 【HDFS API编程】第一个应用程序的开发-创建文件夹

    /** * 使用Java API操作HDFS文件系统 * 关键点: * 1)创建 Configuration * 2)获取 FileSystem * 3)...剩下的就是 HDFS API的操作了*/ ...

  5. 【HDFS API编程】开发环境搭建

    使用HDFS API的方式来操作HDFS文件系统 IDEA Java 使用Maven来管理项目 先打开IDEA,New Project 创建GAV然后next 默认使用的有idea内置的Maven,可 ...

  6. 【HDFS API编程】查看文件块信息

    现在我们把文件都存在HDFS文件系统之上,现在有一个jdk.zip文件存储在上面,我们想知道这个文件在哪些节点之上?切成了几个块?每个块的大小是怎么样?先上测试类代码: /** * 查看文件块信息 * ...

  7. 【HDFS API编程】查看目标文件夹下的所有文件、递归查看目标文件夹下的所有文件

    使用hadoop命令:hadoop fs -ls /hdfsapi/test  我们能够查看HDFS文件系统/hdfsapi/test目录下的所有文件信息 那么使用代码怎么写呢?直接先上代码:(这之后 ...

  8. 【HDFS API编程】副本系数深度剖析

    上一节我们使用Java API操作HDFS文件系统创建了文件a.txt并写入了hello hadoop(回顾:https://www.cnblogs.com/Liuyt-61/p/10739018.h ...

  9. 干货--安装eclipse-hadoop-plugin插件及HDFS API编程两个遇到的重要错误的解决

    在Windows的eclipse上写hdfs的API程序,都会遇到两个错误,在网上查了很多资料,都没有解决的办法,经过了很多时间的研究,终于把这个问题解决了 错误是 1.java.io.IOExcep ...

随机推荐

  1. 51.webpack vue-cli创建项目

    在上两篇博文中已经安装了node.js.webpack.vue-cli,安装的版本为: 今天通过这篇博文创建项目. 1.选择路径 首先通过命令行进入想要创建项目的路径,例如: 通过e:命令进入盘幅,再 ...

  2. SQL Server 2008 报表服务入门【转】

    转http://www.cnblogs.com/YZDONET/archive/2012/08/17/2644711.html 概述 上周,Tim与我们分享了SQL Server 2008 报表服务的 ...

  3. ASP.NET页面之间传值的方式之Application(个人整理)

    Application  Application变量在整个应用程序生命周期中都是有效的,类似于使用全局变量一样,所以可以在不同页面中对它进行存取.它和Session变量的区别在于,前者是所有的用户共用 ...

  4. shell 三剑客

    grep 过滤来自一个文件或标准输入匹配模式内容. 除了grep外,还有egrep.fgrep.egrep是grep的扩展,相当于grep -E.fgrep相当于grep -f,用的少. Usage: ...

  5. Intellij IDEA junit 使用之org.junit不存在

    在IDEA里面已经新建好了一个类,并加入了内容,然后创建测试类,快捷键(Ctrl+Alt+T)或者如图右键 Goto Test 创建后运行报错: Error:(3, 24) java: 程序包org. ...

  6. ogg12.2中的新参数 AllowOutputDir

    在一个测试中,通过普通的pump进程将数据写入远端主机,启动pump进程之后进程abended.查看进程日志,提示: 2018-04-07 13:26:21  ERROR   OGG-25127  R ...

  7. java web 的 几种跨域方式

  8. 从GitHub远程仓库中删除文件夹或文件

    在上传项目到github时,忘记忽略了某个文件夹target,就直接push上去了, 最后意识到了此问题,决定删除掉远程仓库中的target文件夹 删除前: 删除后: 在github上只能删除仓库,却 ...

  9. linux驱动编写(pwm驱动)【转】

    本文转载自:https://blog.csdn.net/feixiaoxing/article/details/79889240 pwm方波可以用来控制很多的设备,比如它可以被用来控制电机.简单来说, ...

  10. Win32汇编学习(6):键盘输入消息

    这次,我们将要学习WINDOWS程序是如何处理键盘消息的. 理论: 因为大多数的PC只有一个键盘,所以所有运行中的WINDOWS程序必须共用它.WINDOWS 将负责把击键消息送到具有输入焦点的那个应 ...