HDFS API 操作实例(一) HDFS读写操作
1. 读取HDFS文件
1.1 字符读取HDFS上的文件
Configuration conf = new Configuration();
Path path = new Path(pathstr);
FileSystem fs = FileSystem.get(conf);
FSDataInputStream fsin= fs.open(path);
BufferedReader br =null;
String line ;
try{
br = new BufferedReader(new InputStreamReader(fsin));
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}finally{
br.close();
}
1.2 字节流读取HDFS文件内容(API)
1.2.1 字节数组读取
public void readFileByAPI() throws Exception {
Configuration conf = new Configuration();
conf.set("fs.default.name", "hdfs://192.168.8.156:9000/");
FileSystem fileSystem = FileSystem.get(conf);
Path path = new Path("/user/compass/readme.txt");
FSDataInputStream fsDataInputStream = fileSystem.open(path);
byte[] bytes = new byte[];
int len = -;
ByteArrayOutputStream stream = new ByteArrayOutputStream();
while ((len = fsDataInputStream.read(bytes)) != -) {
stream.write(bytes, , len);
}
fsDataInputStream.close();
stream.close();
System.out.println(new String(stream.toByteArray()));
}
1.2.1 hadoop工具类读取
public void readFileByAPI() throws Exception {
Configuration conf = new Configuration();
conf.set("fs.default.name", "hdfs://192.168.8.156:9000/");
FileSystem fileSystem = FileSystem.get(conf);
Path path = new Path("/user/compass/readme.txt");
FSDataInputStream fsDataInputStream = fileSystem.open(path);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
IOUtils.copyBytes(fsDataInputStream, stream, );
System.out.println(new String(stream.toByteArray()));
}
1.3 URL流读取HDFS文件(不常用)
public void readFileByURL() throws Exception {
//url流处理器工程
URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
URL url = new URL("hdfs://192.168.8.156:9000/user/readme.txt");
URLConnection connection = url.openConnection();
InputStream inputStream = connection.getInputStream();
// 返回这个输入流中可以被读的剩下的bytes字节的估计值
byte[] b = new byte[inputStream.available()];
while (inputStream.read(b) != -)
inputStream.read(b);
inputStream.close();
String string = new String(b);
System.out.println(string);
}
2. 写入HDFS文件
2.1 字节写入HDFS文件
Configuration conf = new Configuration();
Path path = new Path(path);
FileSystem fs = FileSystem.get(conf);
FSDataOutputStream out = fs.create(src);
out.write(sb.toString().getBytes());
out.close();
2.2 HDFS 文件中追加(append)数据
public static boolean appendRTData(String src, String drc) { // src源文件 drc 追加文件
boolean flag = false;
Configuration conf = new Configuration();
FileSystem fs = null;
try {
fs = FileSystem.get(URI.create(src), conf);
InputStream in = new BufferedInputStream(new FileInputStream(drc));
OutputStream out = fs.append(new Path(src));
IOUtils.copyBytes(in, out, , true);
} catch (IOException e) {
e.printStackTrace();
}
return flag;
}
HDFS API 操作实例(一) HDFS读写操作的更多相关文章
- 【HDFS API编程】查看HDFS文件内容、创建文件并写入内容、更改文件名
首先,重点重复重复再重复: /** * 使用Java API操作HDFS文件系统 * 关键点: * 1)创建 Configuration * 2)获取 FileSystem * 3)...剩下的就是 ...
- Hadoop学习之路(十)HDFS API的使用
HDFS API的高级编程 HDFS的API就两个:FileSystem 和Configuration 1.文件的上传和下载 package com.ghgj.hdfs.api; import org ...
- NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))
NX二次开发API里没有对EXCAL读写操作的相关函数,市面上有很多种方法去实现,比如UFUN调KF,ODBC,OLE(COM组件)等等.这里我是用的OLE(COM组件)方式去做的,这种在VC上创建的 ...
- SSISDB2:SSIS工程的操作实例
SSISDB 系列随笔汇总: SSISDB1:使用SSISDB管理Package SSISDB2:SSIS工程的操作实例 SSISDB3:Package的执行实例 SSISDB4:当前正在运行的Pac ...
- python 文件读写操作(24)
以前的代码都是直接将数据输出到控制台,实际上我们也可以通过读/写文件的方式读取/输出到磁盘文件中,文件读写简称I/O操作.文件I/O操作一共分为四部分:打开(open)/读取(read)/写入(wri ...
- HDFS API操作实践
本文提供几个简单的实例,来说明如何使用hadoop的java API针对HDFS进行文件上传.创建.重命名.删除操作 本文地址:http://www.cnblogs.com/archimedes/p/ ...
- HDFS api操作
import java.net.URI;import java.util.Iterator;import java.util.Map.Entry; import org.apache.hadoop.c ...
- 大数据系列2:Hdfs的读写操作
在前文大数据系列1:一文初识Hdfs中,我们对Hdfs有了简单的认识. 在本文中,我们将会简单的介绍一下Hdfs文件的读写流程,为后续追踪读写流程的源码做准备. Hdfs 架构 首先来个Hdfs的架构 ...
- Hadoop HDFS的shell(命令行客户端)操作实例
HDFS的shell(命令行客户端)操作实例 3.2 常用命令参数介绍 -help 功能:输出这个命令参数手册 -ls 功能:显示目录信息 示例: hadoop fs ...
随机推荐
- Python Elasticsearch api,组合过滤器,term过滤器,正则查询 ,match查询,获取最近一小时的数据
Python Elasticsearch api 描述:ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.下 ...
- thinkphp ajax调用demo
http://files.cnblogs.com/files/jxkshu/tp_ckgd.rar
- CSS:CSS 图像拼合技术
ylbtech-CSS:CSS 图像拼合技术 1.返回顶部 1. CSS 图像拼合技术 图像拼合 图像拼合就是单个图像的集合. 有许多图像的网页可能需要很长的时间来加载和生成多个服务器的请求. 使用图 ...
- springboot入门级笔记
springboot亮点:不用配置tomcat springboot不支持jsp 准备:配置jdk 配置maven 访问https://start.spring.io/ 并生成自己的springboo ...
- maven学习整理-进阶知识
在maven的阶知识主要学习的是maven在eclipse中的使用.依赖相关的问题.继承(父子工程).统一版本管理.聚合等相关知识 1.maven在eclipse中的使用 由上篇基础知识学习到怎样下载 ...
- 剑指offer——61平衡二叉树
题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树. 题解: 方法一:使用深度遍历,判断每个节点是不是平衡二叉树,这种从上至下的方法会导致底层的节点重复判断多次 方法二:使用后序遍历判断,这种 ...
- 二维RMQ hdu 2888
题目:点这里 题意:给出一个n*m的矩阵,然后又Q个询问:每个询问有x1,y1,x2,y2,x1,y1为子矩阵的左上角坐标,x2,y2为右上角的坐标.求此子矩阵中元素最大值,判断最大值是否在子矩阵四个 ...
- frp 配置多个 web 项目,无需购买域名 (访问内网可视化界面,jupyter noterbook, visdom, tensorboard)
frp 配置多个 web 项目,无需购买域名 简单配置,参考 前言: 网上也有很多教程包括官方文档,都需要购买域名,并且把 frpc.ini 中 [web]节配置的 custom_domains 的 ...
- Oracle之视图联合查询加排序问题
在公司修改bug,有这样的需求:需要从两张视图中查出相同字段的数据,按照导师姓名先排序,再按照学号排序 union联合两张表,SELECT * from((SELECT DS_ID,PYLX_ID,Y ...
- Ansible介绍
第一章 ansible服务介绍 1.1 ansible批量管理服务概述 是基于python语言开发的自动化软件工具 是基于SSH远程管理服务实现远程主机批量管理 1.2 ansible批量管理服务意义 ...