hadoop hdfs的java操作
访问hdfs上的文件并写出到输出台
/**
* 访问hdfs上的文件并写出到输出台
* @param args
*/
public static void main(String[] args) {
try {
//将hdfs格式的url转换成系统能够识别的
URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
URL url = new URL("hdfs://hadoop1:9000/hello");
InputStream in = url.openStream();
/**
* 将读取到的数据写入到文件,不需要自己控制缓冲区,也不需要自己去读取输入流
* @param in 输入流
* @param out 输出流
* @param bufferSize 换成区大小
* @param close 是否关闭流,如果是false,需要在finally中关闭
* IOUtils.closeStream(in);
*/
IOUtils.copyBytes(in, System.out, 1024, true);
} catch (Exception e) {
e.printStackTrace();
}
}
获取FileSystem
/**
* 获取FileSystem
* 使用Hadoop的fileSystem读取文件
*/
public static FileSystem getFileSystem() throws IOException,
URISyntaxException {
FileSystem fileSystem = FileSystem.get(new URI("hdfs://hadoop1:9000"), new Configuration());
return fileSystem;
}
创建文件夹
/**
* 创建文件夹
* @throws URISyntaxException
*/
public static void mkdir() throws IOException, URISyntaxException {
FileSystem fileSystem = getFileSystem();
//在hdfs上创建文件夹,并返回创建是否成功的标示
boolean successful = fileSystem.mkdirs(new Path("/dir1"));
if(successful){
System.out.println("创建文件夹成功");
}
}
上传
/**
* 上传
* @throws URISyntaxException
*/
public static void putdata() throws IOException,
FileNotFoundException, URISyntaxException {
FileSystem fileSystem = getFileSystem();
//创建一个上传路径,返回输出流
FSDataOutputStream os = fileSystem.create(new Path("/dir1/readme"));
FileInputStream in = new FileInputStream("D:\\Program Files\\others\\2345Soft\\HaoZip\\2345好压免责声明.txt");
IOUtils.copyBytes(in, os, 1024, true);
}
下载
/**
* 下载
* @throws URISyntaxException
*/
public static void download() throws IOException, URISyntaxException {
FileSystem fileSystem = getFileSystem();
FSDataInputStream in = fileSystem.open(new Path("hdfs://hadoop1:9000/hello"));
//关闭流需要手动关闭,System.out也是一个输出流,如果是true 下面就不会输出了
IOUtils.copyBytes(in, System.out, 1024, false);
in.close();
}
删除文件或文件夹
/**删除文件或文件夹
* true:表示是否递归删除,如果是文件,这里是true,false都是无所谓,
* 文件夹必须是true,否则报错
* @throws URISyntaxException
*/
public static void delete() throws IOException, URISyntaxException {
FileSystem fileSystem = getFileSystem();
boolean isDeleted = fileSystem.delete(new Path("/dir1"), true);
if(isDeleted){
System.out.println("删除成功");
}
}
遍历目录
/**遍历目录
* 调用FileSystem的listStatus方法
* 查看file的状态 使用FileStatus
* @throws URISyntaxException
*/
public static void list() throws IOException, URISyntaxException {
FileSystem fileSystem = getFileSystem();
FileStatus[] listStatus = fileSystem.listStatus(new Path("/"));
for (FileStatus fileStatus : listStatus) {
String isDir = fileStatus.isDir()?"目录":"文件";
String name = fileStatus.getPath().getName().toString();
System.out.println(isDir+"-->"+name);
}
}
hadoop hdfs的java操作的更多相关文章
- hadoop学习(五)----HDFS的java操作
前面我们基本学习了HDFS的原理,hadoop环境的搭建,下面开始正式的实践,语言以java为主.这一节来看一下HDFS的java操作. 1 环境准备 上一篇说了windows下搭建hadoop环境, ...
- Hadoop HDFS文件常用操作及注意事项
Hadoop HDFS文件常用操作及注意事项 1.Copy a file from the local file system to HDFS The srcFile variable needs t ...
- Hadoop HDFS (3) JAVA訪问HDFS
如今我们来深入了解一下Hadoop的FileSystem类. 这个类是用来跟Hadoop的文件系统进行交互的.尽管我们这里主要是针对HDFS.可是我们还是应该让我们的代码仅仅使用抽象类FileSyst ...
- Hadoop HDFS的Shell操作实例
本文发表于本人博客. 我们知道HDFS是Hadoop的分布式文件系统,那既然是文件系统那最起码会有管理文件.文件夹之类的功能吧,这个类似我们的Windows操作系统一样的吧,创建.修改.删除.移动.复 ...
- [b0014] HDFS 常用JAVA 操作实战
目的: 学习用java进行的常用hdfs操作 参考: [b0002] Hadoop HDFS cmd常用命令练手 环境: hadoop2.6.4 win7 下的eclipse环境调试已经配置好,参考前 ...
- Hadoop HDFS文件常用操作及注意事项(更新)
1.Copy a file from the local file system to HDFS The srcFile variable needs to contain the full name ...
- HDFS的Java操作
实验环境: Windows 10 Eclipse Mars.2 Release (4.5.2) CentOS 7 Hadoop-2.7.3 先决条件: 1) Windows上各环境变量已配置OK. ...
- Hadoop HDFS (3) JAVA訪问HDFS之二 文件分布式读写策略
先把上节未完毕的部分补全,再剖析一下HDFS读写文件的内部原理 列举文件 FileSystem(org.apache.hadoop.fs.FileSystem)的listStatus()方法能够列出一 ...
- Hadoop HDFS Basic JAVA API
org.apache.hadoop.fs.FileSystem 是HDFS的文件系统抽象,在分布式系统中管理HDFS文件和目录.文件内容存储在由多个相同大小的块(如64M)构成的datanode节 ...
随机推荐
- [转载]自定义ASP.NET MVC Html辅助方法 TagBuilder
在ASP.NET MVC中,Html辅助方法给我们程序员带来很多方便,其重要性也就不言自明.有时候,我们不想重复地写一些HTML代码,或者MS没有提供我们想要的那个HTML标签的Html辅助方法,那么 ...
- iOS socket编程 第三方库 AsyncSocket(GCDAsyncSocket)
Socket描述了一个IP.端口对.它简化了程序员的操作,知道对方的IP以及PORT就可以给对方发送消息,再由服务器端来处理发送的这些消息.所以,Socket一定包含了通信的双发,即客户端(Clien ...
- python繁体中文到简体中文的转换
处理中文字符串遇到了繁体和简体中文的转换,python版: 1.下载zh_wiki.py及langconv zh_wiki.py:https://github.com/skydark/nstool ...
- poj The Clocks 高斯消元
由于数据量不大,所以这题有很多解法. 我用的是高斯消元化为逆矩阵解决的…… 代码如下: #include<stdio.h> #include<iostream> using n ...
- highChartTable 切换
<!doctype html> <html lang="en"> <head> <script type="text/javas ...
- APK签名校验绕过
APK签名校验绕过 Android JNI 获取应用签名 android apk 防止反编译技术第一篇-加壳技术 android apk 防止反编译技术第五篇-完整性校验 利用IDA Pro反汇编程序 ...
- MVC 的HTTP请求
MVC 的HTTP请求过程(以IIS为例) 通过Browser发过请求给IIS(get/post) IIS得到请求后,再把请求转给aspnet_iisapi.dll处理,通过asp.net的一些框架的 ...
- 宏HASH_DELETE
HASH_DELETE(buf_page_t, hash, buf_pool->page_hash, fold, bpage); NAME 可理解为 void* next /********** ...
- 【待填坑】bzoj上WC的题解
之前在bzoj上做了几道WC的题目,现在整理一下 bzoj2115 去膜拜莫队的<高斯消元解xor方程组> bzoj2597 LCT维护MST bzoj1758 分数规划+树分治+单调队列 ...
- ExtJs双ActionResult共用同一Js文件ID冲突解决方案
项目使用MVC+ExtJs实现,权限控制是基于Controller下的ActionResult的,有一个页面因参数不同就需要新建两个ActionResult. 不要问我为何是基于页面级,而不是数据级, ...