一、读取HDFS文件数据、将本地文件写入HDFS中文件、使用IOUtils读写数据

**
* @author: PrincessHug
* @date: 2019/3/18, 17:24
* @Blog: https://www.cnblogs.com/HelloBigTable/
*/
public class HdfsClientDemo03 {
FileSystem fs = null;
Configuration conf = null; @Before
public void init() throws URISyntaxException, IOException, InterruptedException {
conf = new Configuration();
fs = FileSystem.get(new URI("hdfs://192.168.126.128:9000/"),conf,"root");
} /**
* 使用缓冲流读数据
* @throws IOException
*/
@Test
public void ReadData01() throws IOException {
FSDataInputStream in = fs.open(new Path("/words1.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(in, "UTF-8"));
String line = null;
//读数据
while ((line = br.readLine()) != null){
System.out.println(line);
}
//关闭资源
br.close();
in.close();
fs.close();
} /**
* 使用字节数据来接收数据
* @throws IOException
*/
@Test
public void ReadData02() throws IOException {
FSDataInputStream in = fs.open(new Path("/words1.txt"));
byte[] bytes = new byte[1024];
in.read(bytes);
System.out.println(new String(bytes));
in.close();
fs.close();
} /**
* 读取自定义偏移量的数据
* @throws IOException
*/
@Test
public void randomRead() throws IOException {
FSDataInputStream in = fs.open(new Path("/words1.txt"));
in.seek(10);
byte[] bytes = new byte[1024];
in.read(bytes);
System.out.println(new String(bytes));
in.close();
} /**
* 从本地文件读取数据写入hdfs文件中
* @throws IOException
*/
@Test
public void writeData() throws IOException {
FSDataOutputStream out = fs.create(new Path("/window1.txt"), false);
FileInputStream in = new FileInputStream("G:\\潭州课堂笔记视频作业\\java\\集合.txt");
byte[] bytes = new byte[1024];
int read = 0;
while ((read = in.read(bytes)) != -1){
out.write(bytes,0,read);
}
in.close();
out.close();
fs.close();
} /**
* 向hdfs文件中写自定义的数据
*/
@Test
public void writeData01() throws IOException {
FSDataOutputStream out = fs.create(new Path("/Wyh"));
out.write("I love dilireba".getBytes());
out.close();
fs.close();
} /**
* 使用IOUtils的传输流方法上传文件
* @throws IOException
*/
@Test
public void putFileToHdfs() throws IOException {
//从本地文件获取数据流
FileInputStream fis = new FileInputStream(new File("G:\\潭州课堂笔记视频作业\\java\\多线程.txt"));
//定义输出流对象
FSDataOutputStream fos = fs.create(new Path("/threads.txt"));
//流的传输
IOUtils.copyBytes(fis,fos,conf);
//关闭流
IOUtils.closeStream(fis);
IOUtils.closeStream(fos);
fs.close();
} @Test
public void getFileFromHdfs() throws IOException {
//从hdfs文件获取输入流
FSDataInputStream fis = fs.open(new Path("/threads.txt"));
//定义输出流对象
FileOutputStream fos = new FileOutputStream(new File("G:\\潭州课堂笔记视频作业\\java\\threads.txt"));
//流的传输
IOUtils.copyBytes(fis,fos,conf);
//关闭流
IOUtils.closeStream(fis);
IOUtils.closeStream(fos);
fs.close();
}
}

  

HDFS常用API(2)的更多相关文章

  1. HDFS常用API(1)

    一.HDFS集群API所需要jar包的maven配置信息 <dependency> <groupId>org.apache.hadoop</groupId> < ...

  2. HDFS常用API操作 和 HDFS的I/O流操作

    前置操作 创建maven工程,修改pom.xml文件: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xs ...

  3. hdfs常用api(java)

    1.下载文件到本地 public class HdfsUrlTest { static{ //注册url 让java程序识别hdfs的url URL.setURLStreamHandlerFactor ...

  4. HDFS连接JAVA,HDFS常用API

    先在pom.xml中导入依赖包 <dependencies> <!-- https://mvnrepository.com/artifact/org.apache.hadoop/ha ...

  5. 大数据(5) - HDFS中的常用API操作

    一.安装java 二.IntelliJ IDEA(2018)安装和破解与初期配置 参考链接 1.进入官网下载IntelliJ IDEA https://www.jetbrains.com/idea/d ...

  6. HDFS Java API 常用操作

    package com.luogankun.hadoop.hdfs.api; import java.io.BufferedInputStream; import java.io.File; impo ...

  7. [b0014] HDFS 常用JAVA 操作实战

    目的: 学习用java进行的常用hdfs操作 参考: [b0002] Hadoop HDFS cmd常用命令练手 环境: hadoop2.6.4 win7 下的eclipse环境调试已经配置好,参考前 ...

  8. html5 canvas常用api总结(一)

    1.监听浏览器加载事件. window.addEventListener("load",eventWindowLoaded,false); load事件在html页面加载结束时发生 ...

  9. compass General 常用api学习[Sass和compass学习笔记]

    compass 中一些常用api 包括一些浏览器hack @import "compass/utilities/general" Clearfix Clearfix 是用来清除浮动 ...

随机推荐

  1. 《JavaWeb从入门到精通》(明日科技,清华大学出版社)

    <JavaWeb从入门到精通>(明日科技,清华大学出版社)

  2. Python基础知识之大杂烩

    一.range 和 xrange 的区别 xrange 与 range 基本上都是在循环的时候用,两者的用法完全相同.所不同的是xrange生成的是一个生成器,而range生成的是一个list对象. ...

  3. Pychram 在model中修改class属性值后更新到Navicat Premium中

    一.pycharm数据更新的问题bug问题 1.在更改user_email字端属性后出现数据库信息无法更新到数据库,出现的bug原因是数据库修改了属性之后没有做migrate 和 makemigrat ...

  4. js变量前的+是什么意思

    js变量前的+是什么意思   if (+value >= distance) {} 这个+什么意思 可以理解为 Number(value) 会将其按照Number函数的规则转换为数值或者NaN, ...

  5. Allegro PCB Design GXL (legacy) 将指定的层导出为DXF

    Allegro PCB Design GXL (legacy) version 16.6-2015 1.菜单:Display > Color/Visibility... 2.打开Color Di ...

  6. 启动tomcat出现内存溢出错误 java.lang.OutOfMemoryError: PermGen space

    三种因素引起: 1.jvm(jdk)的内存引起. 2. eclipse的内存引起. 3.tomcat的内存引起. 1.解决方法: 2.解决方法: 解决问题的方式就是:修改了安装目录eclipse.in ...

  7. 用ffmpeg把视频编码格式转为h.264

    command: ffmpeg -i infile.mp4 -an -vcodec libx264 -crf 23 outfile.h264

  8. WebClient 支持 gzip, deflate

    低调偷偷的下别人数据 发现下出来乱码- 用F12看看请求,原来人家是用了gzip压缩的- 试着自己加个Heading wc.Headers.Add("Accept-Encoding" ...

  9. BZOJ 3745

    题解: 分治好题 首先暴力显然rmq可以做到n^2 比较容易想到是以最值分治,这样在数据随机复杂度是nlogn,不随机还是n^2的 以最值分治只有做多与较小区间复杂度相同才是nlogn的 而这题里我们 ...

  10. twitter typeahead控件使用经历

    typeahead控件可以用于自动完成这个功能,在jQuery的UI中也有自动完成的控件.以前都是用jQuery UI中的自动完成的控件,但这次想用个轻量级的自动完成的控件,因此就调查了一下typeh ...