HDFS常用API(1)
一、HDFS集群API所需要jar包的maven配置信息
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.8.4</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.8.4</version>
</dependency>
二、从HDFS下载数据文件/上传文件到HDFS文件系统
思路:1.获取配置信息
2.设置配置信息(块大小、副本数)
3.构造客户端
4.下载数据文件/上传数据文件
5.关闭资源
(1)下载文件
/**
* @author: PrincessHug
* @date: 2019/3/18, 16:10
* @Blog: https://www.cnblogs.com/HelloBigTable/
*/
public class HdfsClientDemo02 {
public static void main(String[] args) throws URISyntaxException, IOException, InterruptedException {
//配置信息对象
Configuration conf = new Configuration();
//设置具体配置信息
conf.set("dfs.replication","2");
//构造客户端
FileSystem fs = FileSystem.get(new URI("hdfs://192.168.126.128:9000/"), conf, "root"); //下载数据到本地
fs.copyToLocalFile(new Path("/words1.txt"),new Path("f://words1.txt"));
//关闭资源
fs.close();
System.out.println("下载完成");
}
}
(2)上传文件
/**
* @author: PrincessHug
* @date: 2019/3/18, 11:53
* @Blog: https://www.cnblogs.com/HelloBigTable/
*/
public class HdfsClientDemo01 {
public static void main(String[] args) throws URISyntaxException, IOException, InterruptedException {
//配置信息
Configuration conf = new Configuration();
//配置块大小和副本数
conf.set("dfs.blocksize","64m");
conf.set("dfs.replication","2");
//构造客户端
FileSystem fs = FileSystem.get(new URI("hdfs://192.168.126.128:9000/"), conf, "root");
//上传文件到hdfs客户端
fs.copyFromLocalFile(new Path("/root/love.tsv"),new Path("/love1.tsv"));
//关闭资源
fs.close();
System.out.println("上传成功!");
}
}
三、对HDFS系统进行操作的API
/**
* @author: PrincessHug
* @date: 2019/3/18, 16:16
* @Blog: https://www.cnblogs.com/HelloBigTable/
*/
public class HdfsClientDemo { private static FileSystem fs = null; static {
Configuration conf = new Configuration();
conf.set("dfs.blocksize","64m");
conf.set("dfs.replication","3");
try {
fs = FileSystem.get(new URI("hdfs://192.168.126.128:9000/"),conf,"root");
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (URISyntaxException e) {
e.printStackTrace();
}
} /**
* 创建文件夹方法
* @throws IOException
*/
public void mkDir(String path) throws IOException {
fs.mkdirs(new Path(path));
fs.close();
} /**
* 重命名或移动文件
* @param path1
* @param path2
* @throws IOException
*/
public void hdfsRename(String path1,String path2) throws IOException {
fs.rename(new Path(path1),new Path(path2));
fs.close();
} /**
* 删除文件或文件夹
* @param path 路径
* @throws IOException
*/
public void delete(String path) throws IOException {
fs.delete(new Path(path),true);
fs.close();
} /**
* 列出hdfs指定的目录信息
* @param path
* @throws IOException
*/
public void list(String path) throws IOException {
RemoteIterator<LocatedFileStatus> iterator = fs.listFiles(new Path(path), true);
while (iterator.hasNext()){
//拿数据
LocatedFileStatus status = iterator.next();
System.out.println("文件的路径为:" + status.getPath());
System.out.println("文件的块大小为:" + status.getBlockSize());
System.out.println("文件的块信息为:" + Arrays.toString(status.getBlockLocations()));
System.out.println("文件的长度为:" + status.getLen());
System.out.println("文件的副本数为:" + status.getReplication());
System.out.println("=====================================================");
}
fs.close();
} /**
* 判断时文件还是文件夹
* @param parh
* @throws IOException
*/
public void judgeFileOrDir(String parh) throws IOException {
//展示状态信息
FileStatus[] fileStatuses = fs.listStatus(new Path(parh));
//遍历所有文件
for (FileStatus fs:fileStatuses){
if (fs.isFile()){
System.out.println("文件-----f------" + fs.getPath().getName());
}else {
System.out.println("文件-----d------" + fs.getPath().getName());
}
}
}
} public class HdfsDriver {
public static void main(String[] args) {
HdfsClientDemo hcd = new HdfsClientDemo();
try {
//hcd.mkDir("/wyh");
hcd.judgeFileOrDir("/");
hcd.list("/");
} catch (IOException e) {
e.printStackTrace();
}
}
}
四、
HDFS常用API(1)的更多相关文章
- HDFS常用API操作 和 HDFS的I/O流操作
前置操作 创建maven工程,修改pom.xml文件: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xs ...
- hdfs常用api(java)
1.下载文件到本地 public class HdfsUrlTest { static{ //注册url 让java程序识别hdfs的url URL.setURLStreamHandlerFactor ...
- HDFS连接JAVA,HDFS常用API
先在pom.xml中导入依赖包 <dependencies> <!-- https://mvnrepository.com/artifact/org.apache.hadoop/ha ...
- HDFS常用API(2)
一.读取HDFS文件数据.将本地文件写入HDFS中文件.使用IOUtils读写数据 ** * @author: PrincessHug * @date: 2019/3/18, 17:24 * @Blo ...
- 大数据(5) - HDFS中的常用API操作
一.安装java 二.IntelliJ IDEA(2018)安装和破解与初期配置 参考链接 1.进入官网下载IntelliJ IDEA https://www.jetbrains.com/idea/d ...
- HDFS Java API 常用操作
package com.luogankun.hadoop.hdfs.api; import java.io.BufferedInputStream; import java.io.File; impo ...
- [b0014] HDFS 常用JAVA 操作实战
目的: 学习用java进行的常用hdfs操作 参考: [b0002] Hadoop HDFS cmd常用命令练手 环境: hadoop2.6.4 win7 下的eclipse环境调试已经配置好,参考前 ...
- html5 canvas常用api总结(一)
1.监听浏览器加载事件. window.addEventListener("load",eventWindowLoaded,false); load事件在html页面加载结束时发生 ...
- compass General 常用api学习[Sass和compass学习笔记]
compass 中一些常用api 包括一些浏览器hack @import "compass/utilities/general" Clearfix Clearfix 是用来清除浮动 ...
随机推荐
- wet 下载jdk 64位
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com% ...
- iOS -- Effective Objective-C 阅读笔记 (3)
1: 理解 属性 的概念 属性会自动生成存取方法, 可以利用点语法调用, 若不想编译器自动合成存取方法, 可以自己实现, 还有另外一种方法, 就是使用 @dynamic 关键字, 它会告诉编译器, ...
- Hibrenate之事务的理解以及代码编写
3 事务概念 事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位.通过事务,SQL Server能将逻辑相关的一组操作绑定 ...
- Mybaits动态Sql
什么是动态SQL? MyBatis的强大之处便是它的动态SQL,如果你使用JDBC那么在根据不同条件查询时,拼接SQL语句是多么的痛苦. 比如查询一个学生信息,可以根据学生的姓名,性别,班级,年龄,学 ...
- 理解call及apply
转载自:http://www.zhihu.com/question/20289071 //call 和 apply 都是为了改变某个函数运行时的 context 即上下文而存在的,换句话说,就是为了改 ...
- spring-boot与spring-data-JPA的简单整合
如何在boot中轻松使用JPA <!--首先引入JPA依赖--><dependency> <groupId>org.springframework.boot< ...
- WinHex数据恢复笔记(一)
WinHex数据恢复功能强大,可以从硬件簇上扇区进行数据扫描恢复.首先对winhex的各个功能介绍.之后对实例记录一个Word文档删除后进行恢复. 1.WinHex数据恢复软件的编辑区输入与其他普通文 ...
- C++ Primer 笔记——类成员指针
1.当我们初始化一个成员指针或为成员指针赋值时,该指针并没有指向任何数据.成员指针指定了成员而非成员所属的对象,只有当解引用成员指针时,我们才提供对象信息. 2.和普通的函数指针类似,如果成员存在重载 ...
- Cookie中设置了 HttpOnly,Secure 属性,有效的防止XSS攻击,X-Frame-Options 响应头避免点击劫持
属性介绍: 1) secure属性当设置为true时,表示创建的 Cookie 会被以安全的形式向服务器传输(ssl),即 只能在 HTTPS 连接中被浏览器传递到服务器端进行会话验证, 如果是 HT ...
- MySQL查看库表的大小
MySQL数据库空间使用情况查询 如果想知道MySQL数据库中每个表占用的空间.表记录的行数的话,可以打开MySQL的 information_schema 数据库.在该库中有一个 TABLES 表, ...