HDFS API编程
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编程的更多相关文章
- 【HDFS API编程】从本地拷贝文件,从本地拷贝大文件,拷贝HDFS文件到本地
接着之前继续API操作的学习 CopyFromLocalFile: 顾名思义,从本地文件拷贝 /** * 使用Java API操作HDFS文件系统 * 关键点: * 1)create Configur ...
- 【HDFS API编程】查看HDFS文件内容、创建文件并写入内容、更改文件名
首先,重点重复重复再重复: /** * 使用Java API操作HDFS文件系统 * 关键点: * 1)创建 Configuration * 2)获取 FileSystem * 3)...剩下的就是 ...
- 【HDFS API编程】jUnit封装-改写创建文件夹
首先:什么是jUnit 回顾: https://www.cnblogs.com/Liuyt-61/p/10374732.html 上一节我们知道: /** * 使用Java API操作HDFS文件系 ...
- 【HDFS API编程】第一个应用程序的开发-创建文件夹
/** * 使用Java API操作HDFS文件系统 * 关键点: * 1)创建 Configuration * 2)获取 FileSystem * 3)...剩下的就是 HDFS API的操作了*/ ...
- 【HDFS API编程】开发环境搭建
使用HDFS API的方式来操作HDFS文件系统 IDEA Java 使用Maven来管理项目 先打开IDEA,New Project 创建GAV然后next 默认使用的有idea内置的Maven,可 ...
- 【HDFS API编程】查看文件块信息
现在我们把文件都存在HDFS文件系统之上,现在有一个jdk.zip文件存储在上面,我们想知道这个文件在哪些节点之上?切成了几个块?每个块的大小是怎么样?先上测试类代码: /** * 查看文件块信息 * ...
- 【HDFS API编程】查看目标文件夹下的所有文件、递归查看目标文件夹下的所有文件
使用hadoop命令:hadoop fs -ls /hdfsapi/test 我们能够查看HDFS文件系统/hdfsapi/test目录下的所有文件信息 那么使用代码怎么写呢?直接先上代码:(这之后 ...
- 【HDFS API编程】副本系数深度剖析
上一节我们使用Java API操作HDFS文件系统创建了文件a.txt并写入了hello hadoop(回顾:https://www.cnblogs.com/Liuyt-61/p/10739018.h ...
- 干货--安装eclipse-hadoop-plugin插件及HDFS API编程两个遇到的重要错误的解决
在Windows的eclipse上写hdfs的API程序,都会遇到两个错误,在网上查了很多资料,都没有解决的办法,经过了很多时间的研究,终于把这个问题解决了 错误是 1.java.io.IOExcep ...
随机推荐
- 解决mysql大小写敏感问题
先在服务中 找到 my.min 文件 在 [mysqld] 下面添加一行: lower_case_table_names = 0 其中 0:区分大小写,1:不区分大小写 设置好后 需要重启服务 然 ...
- linux关闭终端响铃
title: linux关闭终端响铃 date: 2018-01-25 15:10:14 tags: linux categories: linux 在终端输入或是直接在.bashrc里添加一行 xs ...
- LeetCode #003# Longest Substring Without Repeating Characters(js描述)
索引 思路1:分治策略 思路2:Brute Force - O(n^3) 思路3:动态规划? O(n^2)版,错解之一:420 ms O(n^2)版,错解之二:388 ms O(n)版,思路转变: 1 ...
- Mysql 集合链接查询
MySQL NULL 值处理 需求:我们已经知道MySQL使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作. ...
- Java爬虫模拟登录——不给我毛概二的H某大学
你的账号访问太频繁,请一分钟之后再试! 从大一开始 就用脚本在刷课 在专业课踢的只剩下一门C#的情况下 活活刷到一周的课 大二开始教务系统多了一个非常**的操作 退课池 and 访问频繁缓冲 难道,我 ...
- 手游折扣app排行榜前10名_2018哪个折扣app最低最好
2018游戏圈白皮书发布,PC端游的份额继续下降,页游的比例也在下降,但手游的比例持续3年上升.以渠道为阵营,逐渐小的平台和公会被逐渐淘汰.流量集中在少数几个大的平台.但是这样带来的问题是,平台越来越 ...
- # NOI.AC省选赛 第五场T1 子集,与&最大值
NOI.AC省选赛 第五场T1 A. Mas的童年 题目链接 http://noi.ac/problem/309 思路 0x00 \(n^2\)的暴力挺简单的. ans=max(ans,xor[j-1 ...
- Pandas 基础(7) - Group By 分组的相关知识
首先, 引入这节需要的 csv 文件 (已上传) import pandas as pd city_df = pd.read_csv('/Users/rachel/Sites/pandas/py/pa ...
- 【六】jquery之HTML代码/文本/值[下拉列表框、多选框、单选框的选中]
val()方法不仅能设置元素的值,同时也能获取元素的值.另外,val()方法还有另外一个用处,就是它能使select(下拉列表框).checkbox(多选框)和radio(单选框)相应的选项被选中,在 ...
- 微信小程序,加载更多
html <!-- 头部 --> <view class='tab'> <view class="tab-new {{selected_new?'active' ...