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




    }

}
相关推荐
_Power_Y20 分钟前
JavaSE:11、内部类
java·开发语言
小张同学(恩师白云)1 小时前
SpringDataJPA基础增删改查
java·数据库
尘浮生1 小时前
Java项目实战II基于Spring Boot的宠物商城网站设计与实现
java·开发语言·spring boot·后端·spring·maven·intellij-idea
Grey Zeng2 小时前
Java SE 23 新增特性
java·jdk·jdk新特性·jdk23
勤奋的小王同学~2 小时前
怎么修改mvn的java版本
java·开发语言
越过难题2 小时前
若依的使用
java
doc_wei2 小时前
Java小区物业管理系统
java·开发语言·spring boot·spring·毕业设计·课程设计·毕设
生产队队长2 小时前
SpringBoot2:web开发常用功能实现及原理解析-@ControllerAdvice实现全局异常统一处理
java·spring boot
一知半解搞开发2 小时前
Mysql系列-索引简介
java·数据库·mysql
lizi888883 小时前
足球大小球及亚盘数据分析与机器学习实战详解:从数据清洗到模型优化
java·人工智能·机器学习·数据挖掘·数据分析