[b0014] HDFS 常用JAVA 操作实战
目的:
学习用java进行的常用hdfs操作
参考:
环境:
hadoop2.6.4
win7 下的eclipse环境调试已经配置好,参考前面的文章
代码:
1. 创建文件夹
package hdfs; import java.io.IOException; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path; /**
*
* @author Administrator
* 创建文件夹,如果不存在
*/
public class CreateFolder { public static void main(String[] args) throws IOException {
Configuration conf =new Configuration();
conf.set("fs.defaultFS", "hdfs://ssmaster:9000/");
FileSystem fs = FileSystem.get(conf) ;
Path path = new Path("/output"); if(! fs.exists(path)){
fs.mkdirs(path);
}
}
}
以流的方式下载文件
package hdfs; import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; import org.apache.commons.compress.utils.IOUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path; /**
* 功能: 将 hdfs://ssmaster:9000/data/paper.txt下载到Windows下c:\paper.txt
* 调用方式:windows下执行,eclipse中执行
*/ public class Down_Load { public static void main(String[] args) { Configuration conf =new Configuration();
conf.set("fs.defaultFS", "hdfs://ssmaster:9000/"); FileSystem fs = null;
Path src = null;
FSDataInputStream in = null;
FileOutputStream out = null; src = new Path("hdfs://ssmaster:9000/data/paper.txt" ); try { fs = FileSystem.get(conf) ;
in = fs.open(src); } catch (IOException e) {
e.printStackTrace();
} try {
out = new FileOutputStream ("c:\\paper.txt"); //等效 c:/paper.txt
} catch (FileNotFoundException e) {
e.printStackTrace();
} try {
IOUtils.copy(in, out);
} catch (IOException e) {
e.printStackTrace();
} }
}
2 上传文件
package hdfs; import java.io.IOException; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path; /**
*
* @author Administrator
* 上传本地文件
*/
public class UploadFile { public static void main(String[] args) throws IOException {
Configuration conf =new Configuration();
conf.set("fs.defaultFS", "hdfs://ssmaster:9000/");
FileSystem fs = FileSystem.get(conf) ;
Path path = new Path("/output");
Path src = new Path("c:/paper.txt"); fs.copyFromLocalFile(false, true, src, path); }
}
3 下载文件
package hdfs; import java.io.IOException; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path; /**
*
* @author Administrator
* 上传本地文件
*/
public class DownFile { public static void main(String[] args) throws IOException {
Configuration conf =new Configuration();
conf.set("fs.defaultFS", "hdfs://ssmaster:9000/");
FileSystem fs = FileSystem.get(conf) ;
Path hdfs = new Path("/output/paper.txt");
Path win7 = new Path("c:/paper_download.txt"); fs.copyToLocalFile(hdfs, win7); }
}
4 删除文件
package hdfs; import java.io.IOException; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path; /**
*
* @author Administrator
* 删除hdfs文件,如何文件不存在,也运行正常
*/
public class DeleteFile { public static void main(String[] args) throws IOException {
Configuration conf =new Configuration();
conf.set("fs.defaultFS", "hdfs://ssmaster:9000/");
FileSystem fs = FileSystem.get(conf) ;
Path hdfs = new Path("/output/paper.txt");
fs.delete(hdfs, true); }
}
5 显示目录信息
package hdfs; import java.io.IOException; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path; /**
*
* @author Administrator
* 显示某个目录下的文件
*/
public class ListFiles { public static void main(String[] args) throws IOException {
Configuration conf =new Configuration();
conf.set("fs.defaultFS", "hdfs://ssmaster:9000/");
FileSystem fs = FileSystem.get(conf) ;
Path hdfs = new Path("/"); FileStatus [] files = fs.listStatus(hdfs);
for (FileStatus file:files) { System.out.print(file.getPath().getName());
System.out.print("\t"+ file.isDirectory());
System.out.print("\t"+ file.getOwner());
System.out.print("\n");
} }
}
总结:
HDFS JAVA API 调用初步学会使用。该篇章翻过去,后续用什么再学
后续:
有空将文件系统的常用操作实现,搜索、递归显示、查看文件内容
参考:
[b0014] HDFS 常用JAVA 操作实战的更多相关文章
- hadoop学习(五)----HDFS的java操作
前面我们基本学习了HDFS的原理,hadoop环境的搭建,下面开始正式的实践,语言以java为主.这一节来看一下HDFS的java操作. 1 环境准备 上一篇说了windows下搭建hadoop环境, ...
- HDFS的Java操作
实验环境: Windows 10 Eclipse Mars.2 Release (4.5.2) CentOS 7 Hadoop-2.7.3 先决条件: 1) Windows上各环境变量已配置OK. ...
- properties文件简介及其常用Java操作
一.properties文件简介 java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是"键=值&q ...
- HDFS常用API操作 和 HDFS的I/O流操作
前置操作 创建maven工程,修改pom.xml文件: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xs ...
- HDFS常用文件操作
put 上传文件 hadoop fs -put wordcount.txt /data/wordcount/ text 查看文件内容 hadoop fs -text /output/wo ...
- hadoop hdfs的java操作
访问hdfs上的文件并写出到输出台 /** * 访问hdfs上的文件并写出到输出台 * @param args */ public static void main(String[] args) { ...
- HDFS常用Java API
- hadoop学习(三)HDFS常用命令以及java操作HDFS
一.HDFS的常用命令 1.查看根目录下的信息:./hadoop dfs -ls 2.查看根目录下的in目录中的内容:./hadoop dfs -ls in或者./hadoop dfs -ls ./i ...
- day03-hdfs的客户端操作\hdfs的java客户端编程
5.hdfs的客户端操作 客户端的理解 hdfs的客户端有多种形式: 1.网页形式 2.命令行形式 3.客户端在哪里运行,没有约束,只要运行客户端的机器能够跟hdfs集群联网 文件的切块大小和存储的副 ...
随机推荐
- 字符串和id的转换方法
在项目中经常会遇到一个需求就是字符串和id的转换,比如标签和标签id.因为在存储系统里面存储字符串会比较浪费内存,而存储id会节省内存和提高效率. 问题分解 通过字符串获得id 通过id获得字符串 实 ...
- 访问rabbitmq-server失败
测试项目正常运行突然访问不了,各项目启动失败,查看日志发现是RabbitMQ拒绝连接. 重启后依然失败,看var/log/rabbitmq/startup_err 发现什么错误信息也没有,后查看磁盘空 ...
- Mysql Join-连接查询(中)
Mysql Join-连接查询(中) 认识 就我平时的数据接触来看, 连接查询也没有很复杂,不够是非常需要耐心和逻辑的, 一点点将数据查出来, 拼接等. 没有什么技巧, 多练习就会了. 无非就是表之间 ...
- 201871010111-刘佳华《面向对象程序设计(java)》第八周学习总结
201871010111-刘佳华<面向对象程序设计(java)>第八周学习总结 实验七 接口的定义与使用 实验时间 2019-10-18 第一部分:知识总结 接口的概念: ①java为了克 ...
- React、Vue、Angular对比 ---- 介绍及优缺点
React 起源于 Facebook 的内部项目,用来架设 Instagram 的网站, 并于 2013年 5 月开源.React 拥有较高的性能,代码逻辑非常简单,越来越多的人已开始关注和使用它.它 ...
- CF-weekly4 F. Kyoya and Colored Balls
https://codeforces.com/gym/253910/problem/F F. Kyoya and Colored Balls time limit per test 2 seconds ...
- Windows Azure Virtual Machine (39) 清除Linux挖矿病毒
<Windows Azure Platform 系列文章目录> 1.之前客户遇到了Azure Linux CPU 100%,症状如下: 2.SSH登录到Linux,查看crontab,有从 ...
- 解决 Ubuntu16.04 + opencv4.1 源码编译错误 Makefile:160: recipe for target 'all' failed
最近源码编译 opencv,出现下面的错误 [ %] Built target opencv_dnn Makefile:: recipe for target 'all' failed google ...
- iview 组件的额外传参问题记录
在使用iview组件的时候,经常遇到额外传参的问题,一般情况下可以使用以下2种方法都可以解决: 1.直接在方法后面输入参数,有的时候借用$event获取当前dom信息,在某些特定情况下可以将参数绑定在 ...
- Java 银联云闪付对接记录
一开始盲目找资料走了弯路: 还是从银联给的官方文档入手最高效: 附件3:云闪付业务商户入网服务指引.pdf http://tomas.test.upcdn.net/pay/%E9%99%84%E4%B ...