IDEA建hadoop项目

2023-05-16

一、新建项目project

选择maven;

填写maven的坐标,“groupId”,“artifactId”,以及“version”,其中groupId是公司域名的反写,而artifactId是项目名或模块名,而version就是该项目或模块所对应的版本号,点击next:

next之后,finish;

二、配置pom

打开 pom.xml,进行修改:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
 
    <groupId>com.hsd.counter</groupId>
    <artifactId>hdfs-api-exise</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!-- 添加下述文件 -->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <hadoop.version>2.5.0</hadoop.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>${hadoop.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>${hadoop.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <version>${hadoop.version}</version>
        </dependency>
    </dependencies>
</project>

 注意:hadoop version要改为自己安装的版本;

三、开始测试

​ 创建一个java类:

3.1、在hdfs上创建目录

package com.hdfs;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

/**
 * 测试一下向hdfs新建目录,类HdfsClient.java
 */
public class HdfsClient {
    public static void main(String[] args) throws IOException, URISyntaxException, InterruptedException {
        Configuration conf = new Configuration();
        
        //获取hdfs客户端对象
        URI uri = new URI("hdfs://1270.0.0.1:9000");
        //返回默认文件系统
        FileSystem fileSystem = FileSystem.get(uri,conf,"root");

        //在hdfs上创建路径
        Path path = new Path("/man");
        fileSystem.mkdirs(path);

        //关闭资源
        fileSystem.close();
    }
}

hadoop插件中可以看到 ,创建成功:

 3.2、把本地文件上传到hdfs文件系统中:

 /**
     * 上传文件到HDFS
     */
    public static void copyFromLocal() throws URISyntaxException, IOException, InterruptedException {
        Configuration conf = new Configuration();

        //获取hdfs客户端对象
        URI uri = new URI("hdfs://hadoop01:9000");
        FileSystem fileSystem = FileSystem.get(uri, conf, "root");


        Path localPath = new Path("C:/Users/Administrator/Desktop/songjiang.txt");//本地地址
        Path hdfsPath = new Path("/man/songjiang.txt");//目标地址
        fileSystem.copyFromLocalFile(localPath,hdfsPath);
        fileSystem.close();
    }
————————————————
版权声明:本文为CSDN博主「Swordsman-Wang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45894479/article/details/114950199

 运行结果:

 

 3.3、从hdfs文件系统拷贝文件到本地:

/**
     * 将文件从hdfs拷贝到本地
     */
    public static void copyToLocal() throws IOException, InterruptedException, URISyntaxException {

        Configuration conf = new Configuration();
        //获取hdfs客户端对象
        URI uri = new URI("hdfs://hadoop01:9000");
        FileSystem fileSystem = FileSystem.get(uri, conf, "root");

        Path localPath = new Path("D:/ZZZ_Work_My_project/Hadoop3/down.txt");
        Path hdfsPath = new Path("/man/hdData.txt");
        fileSystem.copyToLocalFile(false,hdfsPath,localPath,true);

        fileSystem.close();
    }
————————————————

结果:

3.4、文件更名

  /**
     * 文件更名
     */
    public static void reName() throws URISyntaxException, IOException, InterruptedException {
        Configuration conf = new Configuration();
        //获取hdfs客户端对象
        URI uri = new URI("hdfs://hadoop01:9000");
        FileSystem fileSystem = FileSystem.get(uri, conf, "root");

        Path hdfsOldPath = new Path("/man/hdData.txt");
        Path hdfsNewPath = new Path("/man/hdDataF.txt");
        fileSystem.rename(hdfsOldPath,hdfsNewPath);

        fileSystem.close();
    }

————————————————
版权声明:本文为CSDN博主「Swordsman-Wang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45894479/article/details/114950199

结果,更名成功: 

 3.5、其他

  /**
     * 查看文件详情
     */
    public static void listFile() throws URISyntaxException, IOException, InterruptedException {
        Configuration conf = new Configuration();
        //获取hdfs客户端对象
        URI uri = new URI("hdfs://hadoop01:9000");
        FileSystem fileSystem = FileSystem.get(uri, conf, "root");

        RemoteIterator<LocatedFileStatus> listFiles = fileSystem.listFiles(new Path("/"), true);
        while (listFiles.hasNext()){
            LocatedFileStatus fileStatus = listFiles.next();
            System.out.println("============="+fileStatus.getPath().getName()+"=============");
            System.out.println("文件名称:"+fileStatus.getPath().getName()+"\n文件路径:"+fileStatus.getPath()+"\n文件权限:"+fileStatus.getPermission()+"\n文件大小:"+fileStatus.getLen()
                    +"\n分区大小:"+fileStatus.getBlockSize()+"\n文件分组:"+fileStatus.getGroup()+"\n文件所有者:"+fileStatus.getOwner());
            BlockLocation[] blockLocations = fileStatus.getBlockLocations();
            for (BlockLocation blockLocation:blockLocations){
                String[] hosts = blockLocation.getHosts();
                System.out.printf("所在区间:");
                for (String host:hosts){
                    System.out.printf(host+"\t");
                }
                System.out.println();
            }
        }

        fileSystem.close();
    }
————————————————
版权声明:本文为CSDN博主「Swordsman-Wang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45894479/article/details/114950199
/**
     * 判断是文件还是文件夹
     */
    public static void listStatus() throws URISyntaxException, IOException, InterruptedException {
        System.out.println(111111111);
        Configuration conf = new Configuration();
        //获取hdfs客户端对象
        URI uri = new URI("hdfs://hadoop01:9000");
        FileSystem fileSystem = FileSystem.get(uri, conf, "root");

        FileStatus[] fileStatuses = fileSystem.listStatus(new Path("/"));
        for (FileStatus fileStatuse:fileStatuses){
            if (fileStatuse.isFile()){
                System.out.println("文件:"+fileStatuse.getPath().getName());
            }else {
                System.out.println("文件夹:"+fileStatuse.getPath().getName());
            }
        }

        fileSystem.close();
    }
————————————————
版权声明:本文为CSDN博主「Swordsman-Wang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45894479/article/details/114950199

3.6、遍历:

 

 3.7、小文件合并

 

    /**
     * 小文件合并
     * @throws URISyntaxException
     * @throws IOException
     * @throws InterruptedException
     */
    public void mergeSmallFiles() throws URISyntaxException, IOException, InterruptedException {
        //获取分布式文件系统hdfs;第三个参数指定hdfs的用户
        FileSystem fileSystem = FileSystem.get(new URI("hdfs://127.0.01:9000"), new Configuration(), "root");
        FSDataOutputStream fsDataOutputStream = fileSystem.create(new Path("/bigTxt.txt"));
 
        //读取所有本地小文件,写入到hdfs的大文件里面去
        //获取本地文件系统 localFileSystem
        LocalFileSystem localFileSystem = FileSystem.getLocal(new Configuration());
        //读取本地的小文件们
        FileStatus[] fileStatuses = localFileSystem.listStatus(new Path("F:\\testDatas"));
        for (FileStatus fileStatus : fileStatuses) {
            //获取每一个本地小文件的路径
            Path path = fileStatus.getPath();
            //读取本地小文件
            FSDataInputStream fsDataInputStream = localFileSystem.open(path);
            IOUtils.copy(fsDataInputStream,fsDataOutputStream);
            IOUtils.closeQuietly(fsDataInputStream);
        }
        IOUtils.closeQuietly(fsDataOutputStream);
        localFileSystem.close();
        fileSystem.close();
    }

————————————————
版权声明:本文为CSDN博主「深圳四月红」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43230682/article/details/107814553

结果:

 

 

参考:https://blog.csdn.net/weixin_45894479/article/details/114950199?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-12.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-12.control

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

IDEA建hadoop项目 的相关文章

随机推荐

  • Squid中的日志出现TCP_CLIENT_REFRESH_MISS的问题排除

    http www php oa com 2008 07 15 tcp client refresh miss html 今天检查Squid发现大量的日志出现TCP CLIENT REFRESH MISS 见到Cacti中的流量 xff0c
  • 三种方法教你如何在 Ubuntu 20 上安装 WoeUSB

    三种方法教你如何在 Ubuntu 20 上安装 WoeUSB 知乎 上次给大家分享开源软件的时候说过 xff0c 我们公司所有的电脑安装都是ubuntu系统 工作中使用的所有软件都是免费开源的项目 今天我们测试兼容性的时候需要一台windo
  • IIC总线的时钟同步和总线仲裁

    IIC简介 xff1a IIC 即Inter Integrated Circuit 集成电路总线 xff09 xff0c 这种总线类型是由飞利浦半导体公司在八十年代初设计出来的 xff0c 主要是用来连接整体电路 ICS xff0c IIC
  • ubuntu中如何使用中文输入法

    今天我的一个小朋友问我 xff0c 如何在ubuntu中使用中文 xff0c 对于一个初入门的人来说 xff0c 这确实是一个好的问题 xff0c 我看了一下我的系统 xff0c 竟然也不能输入中文哎 我也老搞一下 首先 xff0c 要先下
  • MySQL查看配置文件my.ini或my.conf路径

    查看配置文件my ini或my conf路径 select 64 64 basedir 查看文件存储路径 select 64 64 datadir
  • linux安装软件报错:有未能满足的依赖关系

    一 问题描述 解决了上一个问题 另外一个进程已经为 dpkg 状态数据库 加锁 又一个问题接踵而来 xff08 真是深得命运宠爱呀 xff09 二 问题分析 很明显 xff0c 这不是重启能解决的问题了 xff0c 继续向命运抗争吧 1 依
  • 用Bootstrap写一份简历

    以前学习Bootstrap时练手用的 分享给大家 注意Bootstrap相关文件的路径 xff0c Bootstrap依赖jQuery xff0c 需要先加载jQuery Github代码链接 xff1a 链接 如果有点小用 xff0c 求
  • Linux创建新环境

    Linux的环境操作 1 下载anaconda2 conda导出环境3 conda创建新环境4 pip创建和导出新环境5 pytorch版本安装6 通过通道安装cpython7 通过SCP指定对方端口传输文件8 释放服务器中的缓存 1 下载
  • 【树莓派】树莓派开放WiFi热点

    树莓派4B上创建WiFi热点 xff08 真实可用 xff09 第一步 xff1a 给树梅派4B刷写系统 xff0c 我用的是目前最新的官方系统 xff0c 镜像名称为2021 01 11 raspios buster armhf img
  • Python爬虫攻略(1)>使用Requests获取LOL游戏攻略

    申明 xff1a 本文对爬取的数据仅做学习使用 xff0c 不涉及任何商业活动 xff0c 侵删 Python爬虫教程 gt 1 使用Requests获取LOL游戏攻略 前戏 如果你想先了解一下什么是爬虫 建议看一下这篇文章 学习爬虫前你需
  • Linux下gitee的使用—— 一看就懂得操作

    在做基于ds18b20温度监控的项目开始时 xff0c 就一直在使用git仓库 xff0c 一直没有写过博客 xff0c 基于今天家里没事 xff0c 刚好可以写一下git版本控制的使用 xff01 废话不多说 xff0c 上教程 xff0
  • 文献阅读2:Deep Video Super-Resolution Network

    Deep Video Super Resolution Network Using Dynamic Upsampling Filters Without Explicit Motion Compensation 隐式运动补偿的动态上采样滤波
  • 形参和实参

    形参和实参的区别 形参出现在函数定义中 xff0c 在整个函数体内都可以使用 xff0c 离开该函数则不能使用 实参出现在主调函数中 xff0c 进入被调函数后 xff0c 实参变量也不能使用 形参和实参的功能是作数据传送 发生函数调用时
  • centos 连接windows远程桌面方法

    目录 1 下载并安装软件nux dextop release rpm 2 安装rdesktop软件 3 远程windows桌面 4 rdesktop退出全屏模式 1 下载并安装软件nux dextop release rpm wget ht
  • Winpcap教程(高级应用)

    循序渐进学习使用WINPCAP xff08 五 xff09 WinPcap或libpca最强大的特点之一就是数据流的过滤引擎 它提供一种高效的方法来只捕获网络数据流的某些数据而且常常和系统的捕获机制相集成 过滤数据的函数是pcap comp
  • linux/ubuntu取消sudo输入密码的办法

    Linux Ubuntu sudo不用输入密码的方法 通常我们并不以root身份登录 xff0c 但是当我们执行某些命令 command 时需要用到root权限 xff0c 我们通常都是用 34 sudo command 34 来执行com
  • verilog通过中+:与-:解决变量内固定长度数据位的动态选取

    在FPGA设计过程 xff0c 尤其是算法实现时hi xff0c 有时往往需要选取某个变量的动态范围地址 xff0c 而verilog中常规的向量标识方法a MSB LSB 往往会发生错误 xff0c 在此可借用a BASE WIDTH 的
  • IDEA配置Hadoop插件

    一 安装插件 1 1搜索的方式安装 xff1a setting中找到plugins插件 xff0c 然后搜索big Data 如下图 xff1a 如果找不到可以修改几个配置试一下 xff1a 如果还是不行 xff0c 你可以在cmd里面 p
  • linux的进程突然没有了

    这几天在linux服务器上跑实验 xff0c 进程占用的空间比较大 xff0c 而且占用的时间也比较长 xff0c 有时候会发现进程突然没有了 这个时候去翻了翻系统的内核日志 xff0c var log 路径下会有一个kern log的日志
  • IDEA建hadoop项目

    一 新建项目project 选择maven xff1b 填写maven的坐标 xff0c groupId xff0c artifactId xff0c 以及 version xff0c 其中groupId是公司域名的反写 xff0c 而ar