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读写操作的更多相关文章

  1. 【HDFS API编程】查看HDFS文件内容、创建文件并写入内容、更改文件名

    首先,重点重复重复再重复: /** * 使用Java API操作HDFS文件系统 * 关键点: * 1)创建 Configuration * 2)获取 FileSystem * 3)...剩下的就是 ...

  2. Hadoop学习之路(十)HDFS API的使用

    HDFS API的高级编程 HDFS的API就两个:FileSystem 和Configuration 1.文件的上传和下载 package com.ghgj.hdfs.api; import org ...

  3. NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))

    NX二次开发API里没有对EXCAL读写操作的相关函数,市面上有很多种方法去实现,比如UFUN调KF,ODBC,OLE(COM组件)等等.这里我是用的OLE(COM组件)方式去做的,这种在VC上创建的 ...

  4. SSISDB2:SSIS工程的操作实例

    SSISDB 系列随笔汇总: SSISDB1:使用SSISDB管理Package SSISDB2:SSIS工程的操作实例 SSISDB3:Package的执行实例 SSISDB4:当前正在运行的Pac ...

  5. python 文件读写操作(24)

    以前的代码都是直接将数据输出到控制台,实际上我们也可以通过读/写文件的方式读取/输出到磁盘文件中,文件读写简称I/O操作.文件I/O操作一共分为四部分:打开(open)/读取(read)/写入(wri ...

  6. HDFS API操作实践

    本文提供几个简单的实例,来说明如何使用hadoop的java API针对HDFS进行文件上传.创建.重命名.删除操作 本文地址:http://www.cnblogs.com/archimedes/p/ ...

  7. HDFS api操作

    import java.net.URI;import java.util.Iterator;import java.util.Map.Entry; import org.apache.hadoop.c ...

  8. 大数据系列2:Hdfs的读写操作

    在前文大数据系列1:一文初识Hdfs中,我们对Hdfs有了简单的认识. 在本文中,我们将会简单的介绍一下Hdfs文件的读写流程,为后续追踪读写流程的源码做准备. Hdfs 架构 首先来个Hdfs的架构 ...

  9. Hadoop HDFS的shell(命令行客户端)操作实例

    HDFS的shell(命令行客户端)操作实例 3.2 常用命令参数介绍 -help 功能:输出这个命令参数手册 -ls                  功能:显示目录信息 示例: hadoop fs ...

随机推荐

  1. vue简单的input校验手机号

    <input class="phone input-style " :class="{'err-input' : phone.err}" v-model= ...

  2. Entity Framework 应用程序有以下优缺点

    优点: 1.跨数据库支持能力强大,只需修改配置就可以轻松实现数据库切换2.提升了开发效率,不需要在编写Sql脚本,但是有些特殊Sql脚本EF无法实现,需要我们自己编写(通过EF中的ExecuteSql ...

  3. Hadoop生态上几个技术的关系与区别:hive、pig、hbase 关系与区别  Pig

    Hadoop生态上几个技术的关系与区别:hive.pig.hbase 关系与区别 Pig 一种操作hadoop的轻量级脚本语言,最初又雅虎公司推出,不过现在正在走下坡路了.当初雅虎自己慢慢退出pig的 ...

  4. c#获取图片的高和宽

    Bitmap pic = new Bitmap(图片文件名); int width = pic.Size.Width; // 图片的宽度int height = pic.Size.Height; // ...

  5. 高级Java必看的10本书

    1.深入理解Java虚拟机:JVM高级特性与最佳实践 本书共分为五大部分,围绕内存管理.执行子系统.程序编译与优化.高效并发等核心主题对JVM进行了全面而深入的分析,深刻揭示了JVM的工作原理. 2. ...

  6. CSS 案例学习

    1.样式 display:inline-block;可改变a标签,合其可定义宽高 2.a:hover表示鼠标经过 3.background:url(110.png) bottom 表示:给链接一个图片 ...

  7. 如果在vue中实现一个输入框的抖动效果?

    1. 先来理下思路? 1)抖动就是摆动,现实中的钟摆可以很形象. 2)当摆动到临界点后,就会向相反的方向摆动. 3)在没有动力时,摆动会慢慢停止. 2.用法: :start.sync 里面是抖动器名字 ...

  8. css渐变写法 从左到右渐变三种颜色示例;

    background:linear-gradient(to right,#7f06a8,#a02bc2,#7f06a8)

  9. JS获取CkEditor在线编辑的内容

    参考博文:[实践]获取CKEditor的html文本.纯文本.被选中的内容及赋值 1.获取CKEditor被选中的内容 var mySelection = CKEDITOR.instances.WOR ...

  10. docker Dockerfile学习---构建mongodb环境

    1.创建项目目录并上传包 mkdir centos_mongodb cd centos_mongodb .tgz 2.编辑配置文件 vi mongodb.conf dbpath = /data/usr ...