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节 ...
随机推荐
- DataGridView 列自适应宽度 设置
代码: Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells; 或者设置DataGridView的AutoSizeColu ...
- What are the advantages of logistic regression over decision trees?FAQ
What are the advantages of logistic regression over decision trees?FAQ The answer to "Should I ...
- 如何提高多线程程序的cpu利用率
正如大家所知道的那样,多核多cpu越来越普遍了,而且编写多线程程序也是件很简单的事情.在Windows下面,调用CreateThread函数一次就能够以你想要的函数地址新建一个子线程运行.然后,事情确 ...
- WAF SSI
http://www.2cto.com/Article/201405/299154.html
- Android:实现退出确认对话框
在Android平台上捕获Back键的事件,super.onBackPressed()是执行系统的默认动作,就是退出当前activity,我们要做的就是重写onBackPressed()函数, pub ...
- SOA基础
每个系统上都有多种业务逻辑,这就像在一个小超市中,一个人负责收银.清洁.摆货.咨询等各种各样的事情,当来超市的顾客多到一定程度,这个人就没办法再负责这么多的事情了,系统也同样如此. 第一个现象就是系统 ...
- android 电容屏(二):驱动调试之基本概念篇
平台信息: 内核:linux3.4.39系统:android4.4 平台:S5P4418(cortex a9) 作者:瘋耔(欢迎转载,请注明作者) 欢迎指正错误,共同学习.共同进步!! 关注博主新浪博 ...
- NFC(13)使用Android Beam技术传输文件
注意 Android Beam技术传输文件时nfc只负责连接两个手机,而传输文件实际是用蓝牙模块.且目前接收文件功能只是系统完成,不用自写个接收程序. 传输文件相关的重要api 从Android4.1 ...
- linux 查看系统信息命令
linux 查看系统信息命令是linux初学者必备的基础知识, 这些命令也非常有用, 因为进入linux第一件事就可能是首先查看系统信息, 因此必要的系统的学习一下这些linux系统信息命令还是非常有 ...
- innodb master thread 工作原理
参考 innodb参数汇总 InnoDB的Master Thread工作原理 innodb_max_dirty_pages_pct 默认值 show variables like 'innodb_m ...