Hadoop文件的基本操作
Hadoop提供了大量的API对文件系统中的文件进行操作,主要包括:
(1)读取文件
(2)写文件
(3)读取文件属性
(4)列出文件
(5)删除文件
1、读取文件
以下示例中,将hdfs中的一个文件读取出来,并输出到标准输出流中。
package org.jediael.hadoopdemo.fsdemo;import java.io.IOException;
import java.net.URI;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;public class FileSystemDoubleCat {public static void main(String[] args) throws IOException {String fileName = args[0];Configuration conf = new Configuration();FileSystem fs = FileSystem.get(URI.create(fileName), conf);FSDataInputStream in = null;try {in = fs.open(new Path(fileName));IOUtils.copyBytes(in, System.out, 4096, false);in.seek(0);IOUtils.copyBytes(in, System.out, 4096, false);} finally {in.close();}}}
(1)其中FSDataInputStream实现了Seekable接口,可以对文件进行随机定位,但注意,seek()的代价较高,如无必要,尽量少使用。
2、文件复制
package org.jediael.hadoopdemo.fsdemo;import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;public class FileCopy {public static void main(String[] args) throws IOException {String sourceFile = args[0];String destFile = args[1];InputStream in = null;OutputStream out = null;try {//1、准备输入流in = new BufferedInputStream(new FileInputStream(sourceFile));//2、准备输出流Configuration conf = new Configuration();FileSystem fs = FileSystem.get(URI.create(destFile), conf);out = fs.create(new Path(destFile));//3、复制IOUtils.copyBytes(in, out, 4096, false);} finally {in.close();out.close();}}}
3、获取文件属性
文件属性以FileStatus对象进行封装,使用FileSystem对象的getFileStatus()方法,可以获取到文件的FileStatus对象。
package org.jediael.hadoopdemo.fsdemo;import java.io.IOException;
import java.net.URI;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;public class FileStatusDemo {public static void main(String[] args) throws IOException {String fileName = args[0];Configuration conf = new Configuration();FileSystem fs = FileSystem.get(URI.create(fileName), conf);//获取FileSystem对象。FileStatus status = fs.getFileStatus(new Path(fileName));System.out.println(status.getOwner()+" "+status.getModificationTime());}}
4、列出某个目录下的文件
使用FileSystem的ListStatus方法,可以获取到某个目录下所有文件的FileStatus对象。
package org.jediael.hadoopdemo.fsdemo;import java.io.IOException;
import java.net.URI;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FileUtil;
import org.apache.hadoop.fs.Path;public class ListStatusDemo {public static void main(String[] args) throws IOException {String dir = args[0];Configuration conf = new Configuration();FileSystem fs = FileSystem.get(URI.create(dir), conf);FileStatus[] stats = fs.listStatus(new Path(dir));Path[] paths = FileUtil.stat2Paths(stats);for(Path path : paths){System.out.println(path);}}}
Hadoop文件的基本操作相关推荐
- hadoop文件存储位置_Hadoop文件的存储格式实例详解
sequence文件存储格式 1.txt 纯文本格式,若干行记录.默认用字符编码存储 2.SequenceFile格式(顺序文件格式,可进行切割) key-value 格式进行存储,最终形成的是一个二 ...
- C语言中文件的基本操作函数fprintf和fscanf实例介绍
C语言文章更新目录 C/C++学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程机制 C语言基础-第一个C程序 C语言基础-简单程序分 ...
- c语言infile和outfile用法,C语言文件读写基本操作DEMO
DEMO 来源于<C语言实战105例>中的34例:文件读写基本操作 把infile中的内容写到outfile中去 #include #include int main() { FILE * ...
- Hadoop 文件命令
Hadoop 文件命令 * 文件操作 * 查看目录文件 * $ hadoop dfs -ls /user/cl * * 创建文件目录 * $ hadoop dfs -mkdir /user/ ...
- 16 操作系统第四章 文件管理 文件的基本操作 文件共享 文件保护 文件系统的层次结构
文章目录 1 文件的基本操作 1.1 创建文件 1.2 删除文件 1.3 打开文件 1.4 关闭文件 1.5 读文件 1.6 写文件 1.7 文件基本操作小结 2 文件共享 2.1 基于索引结点的共享 ...
- 操作系统之文件管理:6、文件的基本操作(创建文件、打开文件、删除文件、关闭文件、读文件、写文件)
5.文件的基本操作 思维导图 文件操作 创建文件 删除文件 读文件 写文件 打开文件 关闭文件 思维导图 文件操作 创建文件 删除文件 读文件 写文件 打开文件 1.在系统中有一张系统的文件打开表,用 ...
- 【王道考研操作系统】—文件的基本操作
[王道考研操作系统]-文件的基本操作 一.文件的逻辑结构 按文件是否有结构分为:无结构文件.有结构文件两种. 无结构文件:文件内部的数据就是一系列二进制流或字符流组成.又称流式文件,如Windows操 ...
- Hadoop文件基础操作命令
1.查看进程jps 2.进入配置文件(可能路径不同,具体路径以格式化后通知的文件储存路径为主) [root@master ~]# cd /tmp/hadoop-root/dfs/name/curren ...
- 文件的基本操作--利用爬取的王者荣耀李信台词进行练习
文章目录 文件的基本操作 文件打开和关闭 文件打开模式 读取/写入文件 StringIO和BytesIO 内存假文件 上下文管理 os模块 os模块 的目录及文件操作 os.path模块 小练习-爬取 ...
最新文章
- Java 发送QQ邮箱邮件
- Linux C编程--操作文件结束和错误的判断方法(函数)
- 毛坦厂中学是“高考工厂”?白岩松:我做不出嘲讽它的事情!
- Asp组件中级入门与精通系列之三
- TensorFlow Lite学习笔记
- 前端学习(1022):jquery学习目标
- Android 申请权限结果返回处理
- xercesimpl做什么用的_一体化泵站是用来做什么的有什么用
- 计算机普通话培训开班简报,普通话培训第四期简报.doc
- 应对雾霾,哪款口罩适合你?
- 请问,非计算机专业,只为软考中级,哪一种最容易过?
- Java实现UTC时区转换
- 【虚拟机数据恢复】VMware ESX SERVER数据恢复案例
- Redhawk 如何gds2def?
- 手风琴控件android,ExpandableListView实现手风琴效果
- centos7搭建开源ERP-PSI
- 字段属性——唯一约束
- google支持本地ajax,360chrome,google chrome浏览器使用jquery.ajax加载本地html文件
- 锐捷交换机时钟同步设置
- 本科生学习GNSS算法 中级教程(三)- rtklib多系统多频单点定位算法 - 多频残差计算以及新增配置
热门文章
- 螺旋方阵 | 蛇形填数
- visual studio code Python终端运行_VS Code 6 月 Python 扩展更新
- assert()函数_【工程师分享】避免Xil_Assert系列宏导致的死循环
- controller调用controller的方法_你想过 Controller 这些方法里的参数是如何工作的吗?...
- postman发送object_.NetCore HttpClient发送请求的时候为什么自动带上了一个RequestId头部...
- java连接数据库hei_如何黑MySQL5数据库?(来自:http://superhei.blogbus.com)
- typescript 方法后面加感叹号_TypeScript编译器SDK版本问题
- 液晶弹性自由能计算_自由能方法应用(一)开放计算平台BRIDGE的介绍及使用案例...
- web站点放入html页面,HTML
- html5输入框自动放大镜,JS 仿支付宝input输入显示数字放大镜