前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Java Api 操作HDFS

使用Java Api 操作HDFS

作者头像
梅花
发布2020-09-28 16:26:30
1.5K0
发布2020-09-28 16:26:30
举报

如题 我就是一个标题党 就是使用JavaApi操作HDFS,使用的是MAVEN,操作的环境是Linux

首先要配置好Maven环境,我使用的是已经有的仓库,如果你下载的jar包 速度慢,可以改变Maven 下载jar包的镜像站改为 阿里云。

贴一下 pom.xml

使用到的jar包

<dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.10</version>
        </dependency>
        
        <!-- hadoop Client -->
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>${hadoop.version}</version>
        </dependency>
        
</dependencies>

然后就是操作HDFS的代码

package com.zuoyan.hadoop.hdfs;

import java.io.File;
import java.io.FileInputStream;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;

/**
 * use java api operate hdfs
 * 
 * @author beifeng
 * 
 */
public class HdfsApp {

    // get FileSystem
    public static FileSystem getFileSystem() throws Exception {
        Configuration conf = new Configuration();
        FileSystem fileSystem = FileSystem.get(conf);
        return fileSystem;
    }

    public static void read(String fileName) throws Exception {

        FileSystem fileSystem = getFileSystem();

        // read Path
        Path readPath = new Path(fileName);

        FSDataInputStream inStream = fileSystem.open(readPath);

        try {

            IOUtils.copyBytes(inStream, System.out, 4096, false);

        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        } finally {
            // if Exception close Stream
            IOUtils.closeStream(inStream);
        }
    }

    public static void main(String[] args) throws Exception{
            
            //String fileName = "/user/beifeng/mapreduce/wordcount/input/wc.input";
            //read(fileName);
        
            FileSystem fileSystem = getFileSystem();
            //write path
            String putFileName = "/user/beifeng/put-wc.input";
            
            Path writePath = new Path(putFileName);
            
            FSDataOutputStream outputStream = fileSystem.create(writePath);
            
            FileInputStream inputStream = new FileInputStream(
                    new File("/opt/modules/hadoop-2.5.0/wc.input"));
            
            try {
                IOUtils.copyBytes(inputStream, outputStream, 4096,false);
            } catch (Exception e) {
                // TODO: handle exception
                inputStream.close();
                outputStream.close();
            }
            
    }

}

思路 可以使用Java操作hdfs的api 制作一个基于HDFS的 云盘 ,可以对文件进行 上传 、删除、移动目录 、查看目录,但是不可以对文件的内容进行修改!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-09-20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档