前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hadoop入门 Java api操作hdfs

Hadoop入门 Java api操作hdfs

原创
作者头像
Emperor_LawD
修改2021-06-22 10:25:41
1K0
修改2021-06-22 10:25:41
举报

新建项目

  • File->New->Module->Maven,选择quickstart
  • 设置文件名和文件地址
  • 点击完成
  • 项目目录
  • 配置pom.xml
    • 添加hadoop依赖包
<!--添加hadoop依赖-->
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-client</artifactId>
    <version>${hadoop.version}</version>
</dependency>
<!--全局定义hadoop的版本-->
<hadoop.version>2.6.0-cdh5.7.0</hadoop.version>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="
  • 点击图中标志
  • 配置好的Maven目录

测试hadoop是否安装成功

  • AppTest文件中写入以下代码
package com.syh;

import static org.junit.Assert.assertTrue;

import org.junit.Test;
import org.apache.hadoop.fs.*;

/**
 * Unit test for simple App.
 */
public class AppTest 
{
    /**
     * Rigorous Test :-)
     */
    @Test
    public void shouldAnswerWithTrue()
    {
        assertTrue( true );
    }

    @Test
    public void testHadoop() {
        FileSystem fileSystem = null;
    }
}
  • 按住Ctrl点击FilrSystem可以看到跳转到hadoop目录下,说明安装成功了

连接hdfs

  • 新建java文件
  • HDFSApp文件中写入以下代码,在hadoop中创建文件夹
package com.syh.hdfs;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.net.URI;

public class HDFSApp {
    Configuration configuration = null;
    FileSystem fileSystem = null;
    // 配置路径(ip地址)
    public static final String HDFS_PATH = "hdfs://192.168.207.128:8020";
    // 测试(新建文件夹)
    @Test
    public void mkdir() throws Exception {
        fileSystem.mkdirs(new Path("/emperorlawd/test"));
    }

    // Java 连接hdfs 需要先建立一个连接
    // 测试方法执行之前要执行的操作
    @Before
    public void setUp() throws Exception {
        System.out.println("开始建立与HDFS的连接");
        configuration = new Configuration();
        fileSystem = FileSystem.get(new URI(HDFS_PATH), configuration, "hadoop");
    }

    // 测试之后要执行的代码
    @After
    public void tearDown() {
        configuration = null;
        fileSystem = null;
        System.out.println("关闭与HDFS的连接");
    }
}
  • 运行成功的效果

创建文件

  • HDFSApp文件中加入以下代码
// 创建文件
    @Test
    public void create() throws Exception {
        Path path = new Path("/emperorlawd/test/hello.txt");
        FSDataOutputStream outputStream = fileSystem.create(path);
        outputStream.write("hello hadoop".getBytes());
        outputStream.flush();
        outputStream.close();
    }
  • 运行create()

重命名文件

  • HDFSApp文件中加入以下代码
// 重命名文件
    @Test
    public void rename() throws Exception {
        Path oldPath = new Path("/emperorlawd/test/hello.txt");
        Path newPath = new Path("/emperorlawd/test/rehello.txt");
        fileSystem.rename(oldPath, newPath);
    }
  • 运行rename()

查看文件

  • HDFSApp文件中加入以下代码
// 查看文件
    @Test
    public void cat() throws Exception {
        Path path = new Path("/emperorlawd/test/rehello.txt");
        FSDataInputStream inputStream = fileSystem.open(path);
        IOUtils.copyBytes(inputStream, System.out, 1024);
        inputStream.close();
    }
  • 运行cat()

上传文件

  • HDFSApp文件中加入以下代码
// 上传文件
    @Test
    public void upload() throws Exception {
        Path localPath = new Path("cifar-10-python.tar.gz");
        Path hdfsPath = new Path("/");
        fileSystem.copyFromLocalFile(localPath, hdfsPath);
    }
  • 运行upload()

下载文件

  • HDFSApp文件中加入以下代码
// 下载文件
    @Test
    public void download() throws Exception {
        Path hdfsPath = new Path("/hadoop-2.6.0-cdh5.7.0.tar.gz");
        Path localPath = new Path("./down/hadoop-2.6.0-cdh5.7.0.tar.gz");
        fileSystem.copyToLocalFile(false, hdfsPath, localPath, true);
    }
  • 运行download()

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 新建项目
  • 测试hadoop是否安装成功
  • 连接hdfs
  • 创建文件
  • 重命名文件
  • 查看文件
  • 上传文件
  • 下载文件
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档