如何用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("下载成功!");




    }

}
相关推荐
NE_STOP12 小时前
MyBatis-配置文件解读及MyBatis为何不用编写Mapper接口的实现类
java
后端AI实验室17 小时前
用AI写代码,我差点把漏洞发上线:血泪总结的10个教训
java·ai
程序员清风19 小时前
小红书二面:Spring Boot的单例模式是如何实现的?
java·后端·面试
belhomme19 小时前
(面试题)Redis实现 IP 维度滑动窗口限流实践
java·面试
Be_Better19 小时前
学会与虚拟机对话---ASM
java
开源之眼1 天前
《github star 加星 Taimili.com 艾米莉 》为什么Java里面,Service 层不直接返回 Result 对象?
java·后端·github
Maori3161 天前
放弃 SDKMAN!在 Garuda Linux + Fish 环境下的优雅 Java 管理指南
java
用户908324602731 天前
Spring AI 1.1.2 + Neo4j:用知识图谱增强 RAG 检索(上篇:图谱构建)
java·spring boot
小王和八蛋1 天前
DecimalFormat 与 BigDecimal
java·后端
beata1 天前
Java基础-16:Java内置锁的四种状态及其转换机制详解-从无锁到重量级锁的进化与优化指南
java·后端