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文件的基本操作 分类: A1_HADOOP 2014-12-05 11:36 392人阅读 评论(0) 收藏
Hadoop提供了大量的API对文件系统中的文件进行操作,主要包括: (1)读取文件 (2)写文件 (3)读取文件属性 (4)列出文件 (5)删除文件 1、读取文件 以下示例中,将hdfs中的一个文件 ...
- HDFS文件的基本操作
HDFS文件的基本操作: package wjn; import java.io.BufferedInputStream; import java.io.BufferedReader; import ...
- Python之文件的基本操作
在python中,对文件的基本操作一共有如下四种: 1.打开文件 file_obj = open("文件路径","模式") 常用的打开文件模式有: r:以只读方 ...
- Python学习之路基础篇--08Python基础+ 文件的基本操作和 注册小作业
1 文件的基本操作 #1. 打开文件的模式有(默认为文本模式): r ,只读模式[默认模式,文件必须存在,不存在则抛出异常] w,只写模式[不可读:不存在则创建:存在则清空内容] a, 只追加写模式[ ...
- Python基础之文件的基本操作
概述:文件的基本操作1.open 打开文件 f = open("xxx",mode="r",encoding="utf-8") #常用形式 ...
- python基础学习Day8 文件的基本操作
1.文件的基本操作初识 f = open('a.text', 'r', encoding='utf-8')data = f.read()print(data)f.close() 2.读 r r+b ...
- 马士兵hadoop第二课:hdfs集群集中管理和hadoop文件操作
马士兵hadoop第一课:虚拟机搭建和安装hadoop及启动 马士兵hadoop第二课:hdfs集群集中管理和hadoop文件操作 马士兵hadoop第三课:java开发hdfs 马士兵hadoop第 ...
- Linux下文件的基本操作
文件的基本操作 新建和删除文件夹 命令#mkdir /file 在当前目录创建file文件夹 命令#rmdir /file 删除当前目录下file文件夹 复制和移动文件 命令#cp text/file ...
- 马士兵hadoop第二课:hdfs集群集中管理和hadoop文件操作(转)
马士兵hadoop第一课:虚拟机搭建和安装hadoop及启动 马士兵hadoop第二课:hdfs集群集中管理和hadoop文件操作 马士兵hadoop第三课:java开发hdfs 马士兵hadoop第 ...
随机推荐
- Css 应用一
Placeholder使用 CSS3里有相应的通用的对Placeholder提示信息美化的方法.你可以设置提示信息文字的颜色,透明度,背景色等. 为了最大化的兼容所有浏览器,给CSS里的placeho ...
- C程序设计语言练习题1-7
练习1-7 编写一个打印EOF的值的程序. #include <stdio.h> // 包含标准库的信息. int main() // 定义名为main的函数,它不接受参数值. { // ...
- hadoop SQL使用
转载自:http://slaytanic.blog.51cto.com/2057708/782175 Hive 是facebook开源的一个基于hadoop框架的查询工具,也就是说,需要用hive的话 ...
- [POJ] 1274 The Perfect Stall(二分图最大匹配)
题目地址:http://poj.org/problem?id=1274 把每个奶牛ci向它喜欢的畜栏vi连边建图.那么求最大安排数就变成求二分图最大匹配数. #include<cstdio> ...
- proxifier 注册码
https://www.proxifier.com/index.htm L6Z8A-XY2J4-BTZ3P-ZZ7DF-A2Q9C(Portable Edition) 5EZ8G-C3WL5-B56Y ...
- 基于toyix的进程和轻权进程的学习
我们在平时的计算机课上学习过进程,知道程序的执行的背后其实就是进程在进行一些操作.大家都知道打开windows的任务管理器可以看到正在运行的进程,当程序卡死时,可以在任务管理器里强制关闭相关程序的进程 ...
- form 和 ngModel
参考 https://docs.angularjs.org/api/ng/type/ngModel.NgModelController https://docs.angularjs.org/api/n ...
- GDB调试GCC(jRate)
1.前提是build GCC的时候要修改makefile,在configure之后生成的makefile忠,将CFLAGS和CFLAGS_FOR_BUILD改成-g3 -O0.. 2.在root用户下 ...
- QT下实现对Linux Shell调用的几种方法
使用QProcess QThread ============================================ #include <QProcess>int main(){ ...
- android 遍历所有文件夹和子目录搜索文件
java代码: import java.io.File; import android.app.Activity; import android.os.Bundle; import android.v ...