知方号

知方号

idea怎么连接到hadoop idea导入hadoop包

接上文————> 基于hadoop2.7.x centos7.x idea2023.3

目录:一.API操作配置1.给idea项目添加hadoop中的jar包2.导入jar包二.Io操作(上传/下载)1.上传2.下载三.其他操作1.获取文件系统2.创建目录3.删除目录4.更改文件名5.查看文件内容6.判断是文件还是目录

一.API操作配置

项目结构:

1.给idea项目添加hadoop中的jar包

jar包点击下载

2.导入jar包

选择hadoop安装包share下的整个hadoop包里面的jar文件全部导入

将hadoop.dll文件拷贝到C:/Windows/System32目录下,最后重启电脑。(这里在安装配置Windows的hadoop的时候已经拷贝)

二.Io操作(上传/下载)

记得项目内配置Maven,这里之前已经配置

1.上传

hadoop依赖(把下列代码放入pom.xml中)

junit junit 4.12 test

点击刷新一下依赖:

新建java文件,写入以下代码:

第一种方式:

package com.qingtaishuju.zrt;//依赖可手自己导入import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FSDataOutputStream;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.IOUtils;import org.junit.Test;import java.io.File;import java.io.FileInputStream;import java.net.URI;public class Io { // 全局变量 Configuration configuration = new Configuration(); // 定义IP,指定自己的HDFS IP private static String IP = "hdfs://hy:9000"; // TODO:2023/5/27 上传 @Test public void upload() throws Exception {// 1.获取文件系统 FileSystem fs = FileSystem.get(new URI(IP), configuration, "admin");// 2.创建输入流,上传idea本地的文件到HDFS FileInputStream inputStream = new FileInputStream(new File("D:\IDEA\tomcat\HDFS1\wenjian\1.txt"));// 3.创建输出流,将本地文件输出到HDFS的指定文件夹 FSDataOutputStream outputStream = fs.create(new Path("/tmp/0000000.txt"));// 4.对拷 IOUtils.copyBytes(inputStream, outputStream, configuration);// 5.关流 IOUtils.closeStream(inputStream); IOUtils.closeStream(outputStream); }}

第二种方式:

//文件上传 @Test public void upload() throws Exception{ //1.创建配置信息对象 configuration.set("fs.defaultFS",IP); FileSystem fs = FileSystem.get(new URI(IP),configuration,"zrt"); //2.上传,将本地文件上传到HDFS的指定位置 fs.copyFromLocalFile(new Path("D:\IDEA\tomcat\HDFS1\wenjian\1.txt"),new Path("/tmp/test001.txt")); //3.关闭资源 fs.close(); }}

查看:

运行结果:

2.下载

代码接上 第一种方式:

@Test public void getFileToConsle()throws Exception{ //1.获取文件系统 FileSystem fs = FileSystem.get(new URI(IP),configuration,"zrt"); //2.获取输入流,hdfs里面要有这个文件 FSDataInputStream fis = fs.open(new Path("/tmp/0000000.txt")); //3.打印到控制台 IOUtils.copyBytes(fis,System.out,configuration); //4.关闭资源 IOUtils.closeStream(fis);}

第二种方式:

//这个方式没运行成功 @Test public void getFile() throws Exception{ //1.获取文件系统 FileSystem fs = FileSystem.get(new URI(IP),configuration,"zrt"); //2.下载 fs.copyToLocalFile(false,new Path("/tmp/test001.txt"), new Path("D:\IDEA\tomcat\HDFS1\wenjian\test001.txt")); //3.关闭资源 fs.close(); }

运行结果:

三.其他操作1.获取文件系统

创建新java文件,填入如下代码:

package com.qingtaishuju.zrt;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FileSystem;import org.junit.Test;import java.net.URI;public class Connection { //全局变量 Configuration configuration = new Configuration(); //定义IP,自己的hadoop IP private static String IP = "hdfs://hy:9000"; //获取文件系统 @Testpublic void init()throws Exception{ //1.创建配置信息对象 configuration.set("fs.defaultFS",IP); //2.获取文件系统 FileSystem fs = FileSystem.get(new URI(IP),configuration,"zrt"); //3.打印文件系统 System.out.println(fs.toString()); }}

运行结果:

2.创建目录

代码接上,共用引入的类就行,省的新建java文件,方便。

@Test public void mkdir() throws Exception{ //1.获取文件系统 FileSystem fs = FileSystem.get(new URI(IP),configuration,"zrt"); //2.创建目录(这里在tmp目录下创建zrt666目录) fs.mkdirs(new Path("/tmp/zrt666")); //3.关闭资源 fs.close(); }

运行结果:

3.删除目录

代码接上,共用引入的类就行,省的新建java文件,方便。

@Test public void delete() throws Exception{ //1.获取文件系统 FileSystem fs = FileSystem.get(new URI(IP),configuration,"zrt"); //2.删除目录(删除在tmp目录下的zrt666目录) fs.delete(new Path("/tmp/zrt666"),true); //3.关闭资源 fs.close(); }

运行结果:

4.更改文件名

代码接上,共用引入的类就行,省的新建java文件,方便。

@Test public void update() throws Exception{ //1.获取文件系统 FileSystem fs = FileSystem.get(new URI(IP),configuration,"zrt"); //2.让一个文件名重命名(让1.txt改为111.txt) fs.rename(new Path("/tmp/userzrt/1.txt"),new Path("/tmp/userzrt/111.txt")); //3.关闭资源 fs.close(); }

运行结果:

5.查看文件内容

代码接上,共用引入的类就行,省的新建java文件,方便。

@Test public void show() throws Exception{ //1.获取文件系统 FileSystem fs = FileSystem.get(new URI(IP),configuration,"zrt"); //2.获取文件详情,找到HDFS里面的某个文件 RemoteIterator listFiles = fs.listFiles(new Path("/tmp/userzrt/111.txt"),true); //3.遍历 while (listFiles.hasNext()){ LocatedFileStatus status = listFiles.next(); //文件名 System.out.println(status.getPath().getName()+""); //获取长度 System.out.println(status.getLen()+""); //组别 System.out.println(status.getGroup()); System.out.println("************************"); //关闭资源 fs.close(); } }

运行结果:

6.判断是文件还是目录

代码接上,共用引入的类就行,省的新建java文件,方便。

@Test public void teat() throws Exception{ //1.获取文件系统 FileSystem fs = FileSystem.get(new URI(IP),configuration,"zrt"); //2.判断是目录还是文件 FileStatus[] listStatus = fs.listStatus(new Path("/tmp")); for (FileStatus status : listStatus){ if (status.isFile()) { System.out.println("文件" + status.getPath().getName()); }else { System.out.println("目录" + status.getPath().getName()); } } //3.关闭资源 fs.close(); }

运行结果:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。