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. [转]oracle 常用的指令

    1.显示当前用户名 select user from dual; show user 2.显示当然用户有哪些表 select * from tab; 3.显示当所有用户的表 select * from ...

  2. intellij IDEA 安装和配置和使用

    下载:https://www.jetbrains.com/idea/download/download-thanks.html?platform=windows 安装教程:https://blog.c ...

  3. rinetd 一个linux下的端口转发工具

    inux下使用iptables实现端口转发,配置较为复杂,使用rinetd工具可以实现快速配置和修改端口转发. 例:本机ip:1.1.1.1 需要实现访问本机的8080端口,自动转发到2.2.2.2 ...

  4. Atitit 计算word ppt文档的页数

    Atitit 计算word ppt文档的页数 http://localhost:8888/ http://git.oschina.net/attilax/ati_wordutil private vo ...

  5. 设计模式---策略模式Strategy(对象行为型)

    1. 概述 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换.策略模式让算法独立于使用它的客户而独立变化. 策略模式是对算法的封装,它把算法的责任和算法本身分割开,委派给不 ...

  6. Android Launcher分析和修改5——HotSeat分析

    今天主要是分析一下Launcher里面的快捷方式导航条——HotSeat,一般我们使用手机底下都会有这个导航条,但是如果4.0的Launcher放到平板电脑里面运行,默认是没有HotSeat的,刚好我 ...

  7. 【iCore4 双核心板_ARM】例程二十:LWIP_TCP_CLIENT实验——以太网数据传输

    实验现象: 核心代码: int main(void) { system_clock.initialize(); //ϵͳʱÖÓ³õʼ»¯ led.initialize(); //LED³õʼ ...

  8. easyui-combox(tagbox) 多选操作 显示为tagbox

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. form表单下的button按钮会自动提交表单的问题

    form表单下的button按钮会自动提交表单的问题 2017年01月05日 18:02:44 蓝色水 阅读数:18012更多 个人分类: asp.net   form表单下的按钮在没有指定type类 ...

  10. CMS 01

    环境搭建 工具 sublime mysql 5.7, 数据库管理 Navicat django 1.10, django shell (可以用来检查错误) 操作系统, windows 7 搭建 dja ...