hdfs 文件上传

本地   -------->    文件系统对象   -------->    hdfs 文件系统

输入流                               输出流

// 将流从本地 上传到  hdfs 文件系统。
@Test
public void ioPut() throws IOException, InterruptedException, URISyntaxException{
//1 获取文件系统对象
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(new URI("hdfs://192.168.59.11:9000"), conf, "ljs"); //2 输出流 流到 hdfs
FSDataOutputStream fo = fs.create(new Path("/user/ljs/job")); //3 定义输出流 来自 本地磁盘
InputStream is = new FileInputStream(new File("d:/job.txt")); //4 流对接
IOUtils.copyBytes(is, fo, ); IOUtils.closeStream(fs);
//5 关闭流
}

hdfs 文件下载

本地 <-----------  文件系统对象  < --------------------  hdfs文件系统 集群

输出流                                     输出流

@Test
public void ioGet() throws IOException, InterruptedException, URISyntaxException{ // 1 创建文件系统
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(new URI("hdfs://192.168.59.11:9000"),
conf, "ljs");
// 2 创建 输入流 来着 hdfs 文件系统
FSDataInputStream fis = fs.open(new Path("/user/ljs/cook.txt"));
// 3 创建输出流 送到 本地磁盘。
OutputStream os = new FileOutputStream(new File("d:/cook.txt"));
// 4 流对接
IOUtils.copyBytes(fis, os, );
// 5 关闭流
IOUtils.closeStream(fis);
}

定位文件读取

读取第一块   128M

    // 从hdfs文件系统中获取第一块block (128M)
@Test
public void fileSeek1() throws IOException, InterruptedException, URISyntaxException{
// 1 获取文件系统对象
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(new URI("hdfs://192.168.59.11:9000"), conf, "ljs");
// 2 创建打开输入流
FSDataInputStream fis = fs.open(new Path("/user/ljs/hadoop-2.7.2.tar.gz"));
// 3 创建 输出流
OutputStream fos = new FileOutputStream(new File("d:/hadoop-2.7.2.tar.gz.part01"));
// 4 流对接
byte [] buff = new byte[]; // 1kB;
for(int i =; i < *; ++i){
fis.read(buff);
fos.write(buff);
}
// 5 关闭流
fis.close();
fos.close();
}

从第二块文件开始读取

@Test
public void fileSeek02() throws IOException, InterruptedException, URISyntaxException{
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(new URI("hdfs://192.168.59.11:9000"), conf, "ljs");
FSDataInputStream fis = fs.open(new Path("/user/ljs/hadoop-2.7.2.tar.gz"));
OutputStream fos = new FileOutputStream(new File("d:/hadoop-2.7.2.tar.gz.part02")); fis.seek(1024*1024*128);
IOUtils.copyBytes(fis, fos,1024); fis.close();
fos.close(); }

  

io 流操作hdfs的更多相关文章

  1. Hadoop基础-通过IO流操作HDFS

    Hadoop基础-通过IO流操作HDFS 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.上传文件 /* @author :yinzhengjie Blog:http://www ...

  2. Java IO流操作汇总: inputStream 和 outputStream【转】

    我们在进行Android java 开发的时候,经常会遇到各种IO流操作.IO流操作一般分为两类:字符流和字节流.以“Reader”结尾都是字符流,操作的都是字符型的数据:以“Stream”结尾的都是 ...

  3. IO流----操作文件的9种方法代码实现

    IO流----操作文件的9种方法代码实现: 1:使用字节流读写数据: 四种方式: method1:          每次读写一个字节,边读边写: /* * 复制文本文件. * * 数据源:从哪里来 ...

  4. python IO流操作

    python IO流操作 学习完本篇,你将会独立完成 实现操作系统中文件及文件目录的拷贝功能. 将目标图片拷贝到指定的目录中 实现一个自动阅卷程序, Right.txt保存正确答案,xx(学生姓名). ...

  5. io流操作大全

    JAVA 中的IO流 一.流的概念        流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部 ...

  6. java+++IO流操作

    序:IO流的操作主要分为两种读和写.一方面:我们可以通过不加缓冲类字符流BufferedReader/Writer和字节流BufferedInputStream/OutputStream来进行简单的读 ...

  7. IO流操作详解

    注:FileReader继承InputStreamReader类,InputStreamReader实现Reader接口,其他同理. 对于文件内容的操作主要分为两大类 分别是: 字符流 字节流 其中, ...

  8. Java 常用IO流操作详解

    1.基本概念 IO:Java对数据的操作是通过流的方式,IO流用来处理设备之间的数据传输,上传文件和下载文件,Java用于操作流的对象都在IO包中. 2.IO流的分类 图示:(主要IO流) 3.字节流 ...

  9. Java IO流操作 (I)

    1.FileWriter 写数据---输出流---由控制台向文件中写数据 import java.io.FileWriter; import java.io.IOException; /* * 写数据 ...

随机推荐

  1. html元素不可见的三种方式

    html中使元素不可见有三种方法: 使用hidden属性 使用style中的display=none 使用style中的visibility=false 显然,使元素不可见有两类方式: 元素彻底不可见 ...

  2. .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)

    本随笔续接:.NET 同步与异步之锁(ReaderWriterLockSlim)(八) 之前的随笔已经说过.加锁虽然能很好的解决竞争条件,但也带来了负面影响:性能方面的负面影响.那有没有更好的解决方案 ...

  3. 手动释放和收缩tempdb

    USE [tempdb] GO DBCC FREEPROCCACHE DBCC DROPCLEANBUFFERS DBCC FREESYSTEMCACHE ('ALL') DBCC FREESESSI ...

  4. class path and classloader

    https://www.artima.com/insidejvm/ed2/linkmod5.html https://www.artima.com/insidejvm/ed2/securityP.ht ...

  5. RxSwift之路 2#如何开始

    RxSwift之路 2#如何开始 第一步当然是把项目clone到本地,github地址:https://github.com/ReactiveX/RxSwift. 官方文档 学习的第一手资源当然是项目 ...

  6. Django登陆以后重定向到请求登陆的页面

    登陆和注销操作在网页编程上很常见,这两个操作经常需要在操作成功以后转入发出请求的页面. 比如用户正在浏览一篇文章,发现下载该文章的附件需要登录才能进行,这时候点击登陆链接转入登陆页面,输入用户名密码登 ...

  7. Oracle数据导入指定表空间

    1. 打开工具Oracle SQL Plus 以dba身份登录sys用户 sqlplus /nologconn sys@url as sysdba 2. 创建用户并指定表空间 使用客户端工具或者Web ...

  8. 命名实体识别,使用pyltp提取文本中的地址

    首先安装pyltp pytlp项目首页 单例类(第一次调用时加载模型) class Singleton(object): def __new__(cls, *args, **kwargs): if n ...

  9. 深夜一次数据库执行SQL思考(怎么看执行报错信息)

    如下sql在执行时 DROP TABLE IF EXISTS `book`; CREATE TABLE `book` ( `id` int(11) NOT NULL AUTO_INCREMENT, ` ...

  10. android:onClick都做了什么

    同步发表于 http://avenwu.net/viewinject/2015/01/28/android_onclick/ 相信大家都知道在layout里面可以给view写android:onCli ...