1. 读取HDFS文件

1.1 字符读取HDFS上的文件

  1. Configuration conf = new Configuration();
  2. Path path = new Path(pathstr);
  3. FileSystem fs = FileSystem.get(conf);
  4. FSDataInputStream fsin= fs.open(path);
  5. BufferedReader br =null;
  6. String line ;
  7. try{
  8. br = new BufferedReader(new InputStreamReader(fsin));
  9. while ((line = br.readLine()) != null) {
  10. System.out.println(line);
  11. }
  12. }finally{
  13. br.close();
  14. }

1.2 字节流读取HDFS文件内容(API)

1.2.1 字节数组读取

  1. public void readFileByAPI() throws Exception {
  2. Configuration conf = new Configuration();
  3. conf.set("fs.default.name", "hdfs://192.168.8.156:9000/");
  4. FileSystem fileSystem = FileSystem.get(conf);
  5. Path path = new Path("/user/compass/readme.txt");
  6.  
  7. FSDataInputStream fsDataInputStream = fileSystem.open(path);
  8. byte[] bytes = new byte[];
  9. int len = -;
  10. ByteArrayOutputStream stream = new ByteArrayOutputStream();
  11.  
  12. while ((len = fsDataInputStream.read(bytes)) != -) {
  13. stream.write(bytes, , len);
  14. }
  15. fsDataInputStream.close();
  16. stream.close();
  17. System.out.println(new String(stream.toByteArray()));
  18.  
  19. }

1.2.1 hadoop工具类读取

  1. public void readFileByAPI() throws Exception {
  2. Configuration conf = new Configuration();
  3. conf.set("fs.default.name", "hdfs://192.168.8.156:9000/");
  4. FileSystem fileSystem = FileSystem.get(conf);
  5. Path path = new Path("/user/compass/readme.txt");
  6. FSDataInputStream fsDataInputStream = fileSystem.open(path);
  7. ByteArrayOutputStream stream = new ByteArrayOutputStream();
  8. IOUtils.copyBytes(fsDataInputStream, stream, );
  9. System.out.println(new String(stream.toByteArray()));
  10.  
  11. }

1.3 URL流读取HDFS文件(不常用)

  1. public void readFileByURL() throws Exception {
  2. //url流处理器工程
  3. URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
  4. URL url = new URL("hdfs://192.168.8.156:9000/user/readme.txt");
  5. URLConnection connection = url.openConnection();
  6. InputStream inputStream = connection.getInputStream();
  7. // 返回这个输入流中可以被读的剩下的bytes字节的估计值
  8. byte[] b = new byte[inputStream.available()];
  9. while (inputStream.read(b) != -)
  10. inputStream.read(b);
  11. inputStream.close();
  12. String string = new String(b);
  13. System.out.println(string);
  14. }

2. 写入HDFS文件

2.1 字节写入HDFS文件

  1. Configuration conf = new Configuration();
  2. Path path = new Path(path);
  3. FileSystem fs = FileSystem.get(conf);
  4. FSDataOutputStream out = fs.create(src);
  5. out.write(sb.toString().getBytes());
  6. out.close();

2.2 HDFS 文件中追加(append)数据

  1. public static boolean appendRTData(String src, String drc) { // src源文件 drc 追加文件
  2. boolean flag = false;
  3.  
  4. Configuration conf = new Configuration();
  5. FileSystem fs = null;
  6. try {
  7. fs = FileSystem.get(URI.create(src), conf);
  8. InputStream in = new BufferedInputStream(new FileInputStream(drc));
  9. OutputStream out = fs.append(new Path(src));
  10. IOUtils.copyBytes(in, out, , true);
  11. } catch (IOException e) {
  12. e.printStackTrace();
  13. }
  14.  
  15. return flag;
  16. }

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. AcWing 144. 最长异或值路径 01字典树打卡

    给定一个树,树上的边都具有权值. 树中一条路径的异或长度被定义为路径上所有边的权值的异或和: ⊕ 为异或符号. 给定上述的具有n个节点的树,你能找到异或长度最大的路径吗? 输入格式 第一行包含整数n, ...

  2. [NOIP模拟测试10]辣鸡(ljh) 题解

    首先计算块内贡献,很显然是$(x_2-x_1)*(y_2-y_1)*2$. 然后考虑矩形之间的贡献,sort一遍分类讨论$n^2$暴力即可. 注意考虑边界情况是否能多两个,以及角对角的情况. 另外,排 ...

  3. goroutine 需要注意的一个小细节

    虽然goroutine 是并发执行的,但是它们并不是并行运行的.如果不告诉Go 额外的东西,同一时刻只会有一个goroutine 执行.利用runtime.GOMAXPROCS(n) 可以设置goro ...

  4. opencv打开摄像头并新建窗口显示

    几个程序使用的基本函数如下: ******************************************************************* cvCreateCameraCap ...

  5. 剑指offer——40字符串的排列

    题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 输入描述: 输 ...

  6. Java 中 Properties 类的操作

    一.Java Properties类 Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置 ...

  7. zabbix--监控的组件和进程介绍

    上图是zabbix的架构,zabbix proxy(代理),可以减小IO并发. zabbix web GUI是用php写的画图工具,从数据库抓取数据. zabbix database zabbix获取 ...

  8. activeMQ的回顾

    JMS: JMS基本概念: JMS(Java Message Service) 即Java消息服务.它提供标准的产生.发送.接收消息的接口简化企业应用的开发.它支持两种消息通信模型:点到点(point ...

  9. vim - Vi IMproved, 一个程序员的文本编辑器

    总览 (SYNOPSIS) vim [options] [file ..] vim [options] - vim [options] -t tag vim [options] -q [errorfi ...

  10. UPDATE - 更新一个表中的行

    SYNOPSIS UPDATE [ ONLY ] table SET column = { expression | DEFAULT } [, ...] [ FROM fromlist ] [ WHE ...