HDFS编程
HDFS编程主要API
| Hadoop类 | 功能 |
| org.apache.hadoop.fs.FileSystem | 一个通用文件系统的抽象基类,可以被分布式文件系统继承。所有的可能使用Hadoop文件系统的代码都要使用到这个类。 |
| org.apache.hadoop.fs.FileStatus | 客户端可见的文件状态信息。 |
| org.apache.hadoop.fs.FSDataInputStream | 文件输入流,用于读取Hadoop文件。 |
| org.apache.hadoop.fs.FSDataOutputStream | 文件输出流,用于写Hadoop文件。 |
| org.apache.hadoop.fs.permission.FsPermission | 文件或者目录的权限 |
| org.apache.hadoop.conf.Configuration | 访问配置项。所有的配置项的值,如果没有专门配置,以core-default.xml为准;否则,以core-site.xml中的配置为准。 |
对于Hadoop文件系统中的文件的访问是基于 InputStream 和 OutputStream 的流式访问
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.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path; public class Operation { private static Configuration conf = new Configuration(); public static void putMerge(String inputDir, String hdfsFile) throws IOException{
FileSystem hdfs = FileSystem.get(conf);
FileSystem local = FileSystem.getLocal(conf);
Path inputPath = new Path(inputDir);
Path hdfsPath = new Path(hdfsFile);
FileStatus[] inputFiles = local.listStatus(inputPath);
FSDataOutputStream out = hdfs.create(hdfsPath);
System.out.println("inputFiles length -> " + inputFiles.length);
for(FileStatus inputFile:inputFiles){
System.out.println(inputFile.getPath().getName());
FSDataInputStream in = local.open(inputFile.getPath());
byte[] buffer = new byte[256];
int read = -1;
while((read = in.read(buffer))>0){
out.write(buffer,0,read);
}
in.close();
}
} public static void list(String hdfs) throws IOException{
FileSystem fs = FileSystem.get(URI.create(hdfs), conf);
FileStatus fileList[] = fs.listStatus(new Path(hdfs));
int FileNum = fileList.length;
for(int fileCount = 0; fileCount < FileNum; fileCount++){
System.out.println(fileList[fileCount].getPath().getName() + " : " + fileList[fileCount].getLen());
}
} public static void delete(String hdfs) throws IOException{
FileSystem fs = FileSystem.get(URI.create(hdfs), conf);
fs.deleteOnExit(new Path(hdfs));
} public static void main(String[] args) throws IOException {
putMerge("/root/test", "hdfs://localhost:9000/user/root/test");
list("hdfs://localhost:9000/user/root");
delete( "hdfs://localhost:9000/user/root/test");
} }
HDFS编程的更多相关文章
- 暑假第四周总结(HDFS编程实践,安装HBASE)
本周根据书上以及教程的提示,对HDFS进行了编程实践,将教程所给的代码(判断文件是否存在,创建文件,读取文件)进行了应用,根据视频的讲解,对一些简单的语句有了一定的了解,但还是比较生疏.另外还根据提示 ...
- Hadoop HDFS编程 API入门系列之HdfsUtil版本2(七)
不多说,直接上代码. 代码 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs1; import java.io.FileInputStream;import ...
- Hadoop HDFS编程 API入门系列之HdfsUtil版本1(六)
不多说,直接上代码. 代码 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs2; import java.io.FileOutputStream;impor ...
- Hadoop HDFS编程 API入门系列之HDFS_HA(五)
不多说,直接上代码. 代码 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs3; import java.io.FileInputStream;import ...
- Hadoop HDFS编程 API入门系列之简单综合版本1(四)
不多说,直接上代码. 代码 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs4; import java.io.IOException; import ja ...
- Hadoop HDFS编程 API入门系列之合并小文件到HDFS(三)
不多说,直接上代码. 代码 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs7; import java.io.IOException;import ja ...
- Hadoop HDFS编程 API入门系列之路径过滤上传多个文件到HDFS(二)
不多说,直接上代码. 代码 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs6; import java.io.IOException;import jav ...
- Hadoop HDFS编程 API入门系列之从本地上传文件到HDFS(一)
不多说,直接上代码. 代码 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs5; import java.io.IOException; import ja ...
- Hadoop HDFS编程 API入门系列之RPC版本2(九)
不多说,直接上代码. 代码 package zhouls.bigdata.myWholeHadoop.RPC.rpc2; public class LoginServiceImpl implement ...
随机推荐
- Windows里配置Apache2.2+PHP5.3+mod_fcgid运行高效的FastCGI模式
日发现win平台的Apache也可以跑FastCGI模式了,就折腾了一会.FastCGI模式是经实践证明了比传统的模块模式运行效率高很多.记录如下: 一.mod_fcgid配置说明 1.首先下载mod ...
- Struts2源码阅读(一)_Struts2框架流程概述
1. Struts2架构图 当外部的httpservletrequest到来时 ,初始到了servlet容器(所以虽然Servlet和Action是解耦合的,但是Action依旧能够通过httpse ...
- 使用【单独】的一个<script>进行js文件的引用
刚才用jQuery的时候,总是发现js代码不被执行...后来发现我的代码是这么写的: <script type="text/javascript" src="htt ...
- input 和<fmt:formatDate>的结合使用
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <inpu ...
- hdu1285 确定比赛名次(拓扑排序多种方法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1285 Problem Description 有N个比赛队(1<=N<=500),编号依次 ...
- Spring Mvc中DispatcherServlet和Servlet的区别小结
在web开发过程中开始接触的是servlet,用来处理用户请求.这几年随着spring 框架越来越成熟,几乎成了java web开发界的主流框架.既然这么受欢迎肯定有它的优点,spring框架在原来的 ...
- Android——excise(用线性布局、表格布局、相对布局做发送邮件界面)
LinearLayout <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns ...
- php常用的正则表达式
1. 平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用:2. "^\d+$" //非负整数(正整数 + 0)3. "^[0-9]*[1-9][0 ...
- CSS(七):浮动
一.float属性取值:left:左浮动right:右浮动none:不浮动 先看下面的一个例子: <!DOCTYPE html> <html lang="en"& ...
- SQL简明教程系列15 创建索引
CREATE INDEX用于在表中创建索引. 索引使数据库应用程序可以更快地查找数据. 注:更新一个包含索引的表比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新.因此,理想的做法是仅仅在常 ...