如何用idea连接hadoop

先idea中配置hadoop的maven依赖,然后进行连接

前提条件:1、先配置Hadoop依赖

2、从hadoop-3.1.1中的core文件中找到远程连接的名称和地址

1、先去Maven导入依赖

2、打开core-size.xml文件

3、编写代码

完成代码如下:

编写一个hadoop工具类,方便以后直接用

java 复制代码
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;

import java.io.IOException;


public class HadoopTool {
    private HadoopTool(){};
    public static FileSystem getConnection(Configuration configuration){
        FileSystem fs=null;
        try {
             fs = FileSystem.get(configuration);
        } catch (IOException e) {
           e.printStackTrace();
        }

        System.out.println("连接成功!"+fs);
        return fs;

    }

}

编写测试类hadoop:进行连接

java 复制代码
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;


import java.text.SimpleDateFormat;
import java.util.Date;


public class hadoop {
    public static void main(String[] args)  throws Exception{
        //建立HDFS的连接
           //TODO:连接地址和名称都要从hadoop-3.1.1中的/etc/core.site.xml中
           //连接名称:fs.defaultFS
           //连接地址:hdfs://master:9000/
        //创建hadoop配置文件
//        Configuration conf = new Configuration();
//        conf.set("fs.defaultFS","hdfs://master:9000/");
//        FileSystem fs = FileSystem.get(conf);//这里要注意抛异常
//        System.out.println("hadoop连接成功!"+fs);
        Configuration conf = new Configuration();
        conf.set("fs.defaultFS","hdfs://master:9000");
        FileSystem fs = HadoopTool.getConnection(conf);
        RemoteIterator<LocatedFileStatus> files = fs.listFiles(new Path("/"), true);
        //迭代器用while循环即可
        while (files.hasNext()) {
            LocatedFileStatus file = files.next();
            long accessTime = file.getAccessTime();//毫秒的时间戳
            String name = file.getPath().getName();
            System.out.println("文件名:" + name + "," + "文件上传时间:" + new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒").format(new Date(accessTime)));
        }
        //上传文件的时候,不管文件是否存在,只要放到已存在的根目录下,程序就不会报错
//            FSDataInputStream fis = fs.open(new Path("/user/基本用法.txt"));//要读文件
//            Path path = new Path("/dasktop/top/");
//            FSDataOutputStream fos = fs.create(path);//创建hdfs上一个不存在的目录,将读到的内容放到该目录,如果目录存在,则会创建失败
//            int i = 0;
//        byte[] bytes = new byte[2048];
//        while ((i = fis.read(bytes))!=-1) {
//            String s = new String(bytes, 0, bytes.length - 1);
//            System.out.println(s);
//            fos.write(i);
//                fos.hflush();
//            }
//            fos.close();
//            fis.close();


//            fs.copyFromLocalFile(new Path("D:\\JAVAprojects\\mavenTest\\hadoopTest\\src\\main\\java\\数据处理.txt"),new Path("/dasktop/"));
//            System.out.println("推送成功!");
//        //TODO:如果文件不存在,下载或者读取的时候就会报错,如果存在则创建的时候报错,推送成功但不会覆盖
//        //下载的时候,因为是通过网络将hadoop中的文件下载下来,所以文件的序列化流也会被下载到本地
//            fs.copyToLocalFile(new Path("/user/你好.txt"),new Path("D:\\JAVAprojects\\mavenTest\\hadoopTest\\src\\main\\java"));
//            System.out.println("下载成功!");




    }

}
相关推荐
黎雁·泠崖1 分钟前
【魔法森林冒险】2/14 抽象层设计:Figure/Person类(所有角色的基石)
java·开发语言
怒放吧德德36 分钟前
后端 Mock 实战:Spring Boot 3 实现入站 & 出站接口模拟
java·后端·设计
biyezuopinvip1 小时前
基于Spring Boot的企业网盘的设计与实现(任务书)
java·spring boot·后端·vue·ssm·任务书·企业网盘的设计与实现
脸大是真的好~1 小时前
EasyExcel的使用
java·excel
小宋10211 小时前
Java 项目结构 vs Python 项目结构:如何快速搭一个可跑项目
java·开发语言·python
JavaGuide1 小时前
一款悄然崛起的国产规则引擎,让业务编排效率提升 10 倍!
java·spring boot
吃虫子的人1 小时前
记录使用Arthas修改线上源码重新加载的一次过程
java·arthas
figo10tf2 小时前
Spring Boot项目集成Redisson 原始依赖与 Spring Boot Starter 的流程
java·spring boot·后端
zhangyi_viva2 小时前
Spring Boot(七):Swagger 接口文档
java·spring boot·后端