Hadoop通过API访问HDFS

2023-05-16

1、version_1

 /**
     * 通过Hadoop API访问HDFS
     * @throws IOException
     */
    @Test
    public void readFileByAPI() throws IOException {
        //获取hadoop配置信息
        Configuration conf = new Configuration();
        //添加名称节点的映射
        /**
         * <property>
         <name>fs.defaultFS</name>
         <value>hdfs://s150</value>
         </property>
         */
         conf.set("fs.defaultFS","hdfs://s150");
        //获取文件系统
        FileSystem fs = FileSystem.get(conf);
        //获取路径
        Path p = new Path("hdfs://s150:8020/usr/xiaoqiu/hadoop/index.html");
        //通过文件系统打开路径获取HDFS文件输入流
        FSDataInputStream fis =  fs.open(p);
        //创建缓冲区
        byte[] buf = new byte[1024];
        int len = -1;
        //当当读取的长度不等于-1的时候开始写入
        //写入需要字节输出流
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        while ((len = fis.read(buf)) != -1){
            baos.write(buf,0,len);
        }
        //写入完毕,关闭输入流
        fis.close();
        //关闭输出流
        baos.close();
        //将输出流转换字节数组
        byte[] bytes= baos.toByteArray();
        //将字节数组转为字符串
        String str = new String(bytes);
        //打印字符串
        System.out.println(str);

    }

2、version_2借助Hadoop的IOutil对文件进行读取和写入缓冲区

/**
     * 通过Hadoop API访问HDFS
     *借助IOUtils进行文件的读取
     * @throws IOException
     */
    @Test
    public void readFileByAPI2() throws IOException {
        //获取hadoop配置信息
        Configuration conf = new Configuration();
        //添加名称节点的映射
        /**
         * <property>
         <name>fs.defaultFS</name>
         <value>hdfs://s150</value>
         </property>
         */
        conf.set("fs.defaultFS","hdfs://s150");
        //获取文件系统
        FileSystem fs = FileSystem.get(conf);
        //获取路径
        Path p = new Path("hdfs://s150:8020/usr/xiaoqiu/hadoop/index.html");
        //通过文件系统打开路径获取HDFS文件输入流
        FSDataInputStream fis =  fs.open(p);
        //写入需要字节输出流
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        //借助Hadoop的IOutil对文件进行读取和写入缓冲区
        IOUtils.copyBytes(fis,baos,1024);
        //写入完毕,关闭输入流
        fis.close();
        //关闭输出流
        baos.close();
        //将输出流转换字节数组
        byte[] bytes= baos.toByteArray();
        //将字节数组转为字符串
        String str = new String(bytes);
        //打印字符串
        System.out.println(str);

    }

3、创建文件/文件夹

 /**
     * 创建文件夹
     * @throws IOException
     */
    @Test
    public void mkdir() throws IOException {
        Configuration conf = new Configuration();
        conf.set("fs.defaultFS","hdfs://s150:8020");
        FileSystem fs = FileSystem.get(conf);
        fs.mkdirs(new Path("/usr/xiaoqiu/hadoop/mydir1"));

    }

    /**
     * 创建文件
     */
    @Test
    public void mkFile() throws IOException {
        Configuration conf = new Configuration();
        conf.set("fs.defaultFS","hdfs://s150:8020");
        FileSystem fs = FileSystem.get(conf);
        //创建文件,返回输出流
        FSDataOutputStream fos = fs.create(new Path("/usr/xiaoqiu/hadoop/mydir1/hello1.txt"));
        //写入文件
        fos.write("helloworld".getBytes());
        //关闭输出流
        fos.close();
    }

4、删除文件夹/文件

 /**
     * 删除文件夹
     * @throws IOException
     */
    @Test
    public void removeFile() throws IOException {
        Configuration conf = new Configuration();
        conf.set("fs.defaultFS","hdfs://s150:8020");
        FileSystem fs = FileSystem.get(conf);
        fs.delete(new Path("/usr/xiaoqiu/hadoop/mydir1"),true);
    }





转载于:https://www.cnblogs.com/flyingcr/p/10327004.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hadoop通过API访问HDFS 的相关文章

随机推荐

  • Dev-C++ 5.11简单使用说明

    点此下载 xff0c 下载完后解压并双击 Dev Cpp 5 11 TDM GCC 4 9 2Setup exe xff0c 默认安装即可 使用过程如下 xff1a 0 打开Dev C 43 43 开发环境 1 新建源文件 xff0c 按C
  • Deep Belief Network简介

    1 多层神经网络存在的问题 常用的神经网络模型 一般只包含输入层 输出层和一个隐藏层 xff1a 理论上来说 隐藏层越多 模型的表达能力应该越强 但是 当隐藏层数多于一层时 如果我们使用随机值来初始化权重 使用梯度下降来优化参数就会出现许多
  • 神经网络浅讲:从神经元到深度学习

    神经网络是一门重要的机器学习技术 它是目前最为火热的研究方向 深度学习的基础 学习神经网络不仅可以让你掌握一门强大的机器学习方法 xff0c 同时也可以更好地帮助你理解深度学习技术 本文以一种简单的 xff0c 循序的方式讲解神经网络 适合
  • CentOS7使用firewalld打开关闭防火墙与端口

    1 firewalld的基本使用 启动 xff1a systemctl start firewalld 关闭 xff1a systemctl stop firewalld 查看状态 xff1a systemctl status firewa
  • Vue生命周期

    Vue实例的生命周期 什么是生命周期 xff1a 从Vue实例创建 运行 到销毁期间 xff0c 总是伴随这各种各样的事件 xff0c 这些事件统称为生命周期 生命周期钩子 xff1a 就是生命周期事件的函数 主要的生命周期函数分类 xff
  • toapi模块简单使用

    toapi是一个api与爬虫结合的一个库 使用简单 可以自定义api展示 简单的mockserver 但只限制于get请求 toapi会在同级目录下建立缓存机制 再次访问就会读缓存了 安装 pip intall toapi pip inst
  • 高等数学同济第七版课后答案上册

    高等数学同济第七版课后答案上册 下载地址 xff1a 链接 xff1a https pan baidu com s 185C8RB4Y9pYO84V4Rup1Wg 提取码 xff1a p7o4 如果链接失效扫一扫右侧 xff0c 回复 高等
  • 以Integer类型传参值不变来理解Java值传参

    最近在写代码的时候出了一个错误 xff0c 由于对值引用理解的不深 将Integer传入方法中修改 xff0c 以为传入后直接修改Integer中的值就不用写返回值接收了 xff0c 虽然很快发现了问题 xff0c 但还是来总结一下 首先是
  • HD2AV_F3B

    文档内容 xff1a 循环存储器的编写 xff0c 每一行的像素输入进行存储 xff0c 再依据目标像素所在行进行相应的读取 工程中会开辟一定空间的RAM用于存储 xff0c 但是以一个循环的顺序去读写换 时间节点 xff1a 2014 1
  • pip install xxxx报错(一大堆红色exception)【解决】

    安装个distribute或nose或lpthw web或virtualenv 都可能出现下面问题 root 64 kali pip install distribute Collecting distribute Exception Tr
  • 防火墙关闭后不能ping通的解决办法

    修改被ping服务器的防火墙设置 xff1a 开始 控制面板 防火墙 高级 入站规则 文件和打印机共享 回显请求 ICMPv4 In 右键 启用 一共有两个 转载于 https www cnblogs com zhjx0521 p 1041
  • cmake设置mfc编译项目

    cmake minimum required VERSION 3 0 项目名 set PROJ NAME DCMLIB project PROJ NAME 设置变量 set CMAKE ALLOW LOOSE LOOP CONSTRUCTS
  • css 调转180度:transform: rotate(180deg);

    css 调转180度 xff1a transform rotate 180deg 转载于 https www cnblogs com shark1100913 p 8961298 html
  • OpenStack虚拟机冷迁移与热迁移

    一 虚拟机迁移分析 openstacvk虚拟机迁移分为冷迁移和热迁移两种方式 1 1冷迁移 xff1a 冷迁移 cold migration xff0c 也叫静态迁移 关闭电源的虚拟机进行迁移 通过冷迁移 xff0c 可以选择将关联的磁盘从
  • ubuntu下安装谷歌浏览器

    deb 是 Debian Linux 的安装格式 xff0c 在 ubuntu 中同样可以使用 要安装 deb 安装包 xff0c 需要使用 dpkg这个终端命令 xff0c 命令格式如下 xff1a sudo dpkg i lt pack
  • 更改root与vnc密码,配置vnc

    更改root密码 登录到root用户下 passwd 更改vnc密码 vncpasswd 配置vnc vi etc sysconfig vncservers 找到vncservers 61 34 1 myusername 34 这个字符串
  • linux vnc端口修改,vncserver端口的修改

    vnc的默认端口是5901 xff0c 这个说法是不对的 vnc并不是只有一个端口 先看看这个配置 VNCSERVERS 61 34 1 oracle 2 root 34 VNCSERVERARGS 1 61 34 geometry 800
  • winform布局格式

    一 默认布局 可以加panel xff0c 也可以不加 xff1b 通过鼠标拖动控件的方式 xff0c 根据自己的想法布局 拖动控件的过程中 xff0c 会有对齐的线 xff0c 方便操作 xff1b 也可选中要布局的控件 xff0c 在工
  • 事件(信号量、邮箱、消息队列)

    对于共享数据 xff0c 单纯通过加锁来保护在代码实现上这并不是很困难的 真正困难的地方是辨认出需要共享的数据和临界区 xff01 这里有一个很好的经验 xff1a 如果有其他的执行线程可以访问这些数据 xff0c 那么就要给这些数据加锁
  • Hadoop通过API访问HDFS

    1 version 1 通过Hadoop API访问HDFS 64 throws IOException 64 Test public void readFileByAPI throws IOException 获取hadoop配置信息 C