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




    }

}
相关推荐
疯狂打码的少年2 小时前
【数据库技术】关系模型基本概念(关系/属性/元组/键)
java·服务器·数据库·笔记
Mr数据杨3 小时前
【Codex】用学生入学评估模块建立新生能力画像
android·java·javascript·django·codex·项目开发
2601_962056233 小时前
Spring Boot 入门 与 无法解析符号 springframework 的解决
java·spring boot·后端
Thomas21434 小时前
Java scala 数组 链表
java·链表·scala
亚历克斯神4 小时前
低代码与 AI 的融合趋势——从可视化搭建到自然语言生成应用
java·spring·微服务
学长毕业设计4 小时前
基于SpringBoot的瑜伽馆网站的设计与实现(源码+文档+讲解视频)
java·spring boot·后端
一嘴一个橘子4 小时前
nginx 常用命令(在 nginx 目录下执行)
java
harmful_sheep5 小时前
java group by常见用法
java·开发语言·python
SKH.5 小时前
Linux软件编程(6)线程间通信
java·开发语言·数据库
Rain的Java大神之路5 小时前
PC版网站被狂刷怎么处理
java·数据库·redis·后端·mysql·web安全·运维开发