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




    }

}
相关推荐
豆沙沙包?19 分钟前
2025年- H77-Lc185--45.跳跃游戏II(贪心)--Java版
java·开发语言·游戏
年老体衰按不动键盘44 分钟前
快速部署和启动Vue3项目
java·javascript·vue
咖啡啡不加糖1 小时前
Redis大key产生、排查与优化实践
java·数据库·redis·后端·缓存
liuyang-neu1 小时前
java内存模型JMM
java·开发语言
UFIT1 小时前
NoSQL之redis哨兵
java·前端·算法
刘 大 望1 小时前
数据库-联合查询(内连接外连接),子查询,合并查询
java·数据库·sql·mysql
怀旧,1 小时前
【数据结构】6. 时间与空间复杂度
java·数据结构·算法
大春儿的试验田2 小时前
Parameter ‘XXX‘ not found. Available parameters are [list, param1]
java
程序员JerrySUN3 小时前
[特殊字符] 深入理解 Linux 内核进程管理:架构、核心函数与调度机制
java·linux·架构
2302_809798323 小时前
【JavaWeb】Docker项目部署
java·运维·后端·青少年编程·docker·容器