008 Maven的安装(曲折) Java读取hdfs文件 Java操作hdfs文件系统(打印 下载 上传文件) shell删除命令

Windows中Maven的安装

1.将Maven解压到一个目录
2.配置环境变量
首先没配之前 使用cmd命令 mvn -v是不生效的
在这里插入图片描述
然后
在这里插入图片描述
在这里插入图片描述
关掉原先的cmd窗口 重新打开一个 生效了
在这里插入图片描述


3.配置setting.xml文件 指定本地仓库位置
然后配置本地仓库的位置
D:\install\apache-maven-3.3.9\conf
打开Maven安装目录下的conf里面的setting文件
找到这一行
从注释里面拿出来 顺便改下地址
在这里插入图片描述
在这里插入图片描述
这个文件夹自己建一个然后将路径改上

4.和java编译工具整合
这里以eclipse做工具
打开工具栏的window 的Preference
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后记得将setting也设置我们安装目录下的conf的setting路径
在这里插入图片描述
注意最下方的目录使我们刚刚配置的本地仓库目录

这样我们的编译器就和Maven整合上了


这样我们来建一个Maven项目
依次点击 Flie New MavenProject Next 选择 quickstart 然后Next 起名字 然后finish

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

然后我就创建失败了
这里我出了一个问题 这个setting这个设置 第二个路径没有配 应该和第一句一样(虽然我不知啥意思)
在这里插入图片描述
即这样
在这里插入图片描述
然后啊 还是有错误
https://www.cnblogs.com/qiyebao/p/5226508.html
根据这个 弄了半天
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
完了我重启eclipse
新建第一次时是All Catalogs是空的 结果 我又点了install 才找到quickstart 然后再次点击All 竟然出现了所有的 找不到quick 不得已又点开了install 才找到
然后下一步创建
在这里插入图片描述
在这里插入图片描述
然后继续一步一步创建 成功了

在这里插入图片描述
然后打开后才和视频中比对发现少了好多东西
在这里插入图片描述
在这里插入图片描述
准确的说少了JRE system Library 和Maven dependencies
百度后
好像是第一次使用 没有这些东西 需要下载 然后我操作了一下

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
找到了Progress 果然没有下载
在这里插入图片描述
这里吧 我有百度 说是什么把setting的mirror设置成阿里云的镜像比较快
还是啥的 反正一堆设置 需要自行百度
我啥也没改
一边百度一边等着 等了大概半个小时
在这里插入图片描述
这个progress结束了
我的左侧的这几个包也出现了
开心
在这里插入图片描述


下一步
在配置pox.xml文件了
好像是为了导包 hadoop的jar包
我们登录这个网址 搜索hadoop
点击hdfs
https://mvnrepository.com
在这里插入图片描述
我们现在用的hadoop 2.7.1版本 找到点进去

点Maven 复制内容
在这里插入图片描述
就是这么个弄法 还有其他的 也可以从这里找相关配置
这里我们先弄几个(其实我也没一个一个找 就是视频暂停后敲上的)
我直接整个复制过来的

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>qf.com</groupId>
  <artifactId>QF_Online</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>QF_Online</name>
  <url>http://maven.apache.org</url>
    <!-- 自定义变量 -->
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <hadoop.version>2.7.1</hadoop.version>
  </properties>
    <!-- 项目jar包的依赖 -->
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <!-- jdk依赖 -->
    <dependency>
        <groupId>jdk.tools</groupId>
        <artifactId>jdk.tools</artifactId>
        <version>1.7</version>
        <scope>system</scope>
        <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
    </dependency>
    <!-- hadoop start -->
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-common</artifactId>
        <version>${hadoop.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-client</artifactId>
        <version>${hadoop.version}</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-hdfs -->
	<dependency>
	    <groupId>org.apache.hadoop</groupId>
	    <artifactId>hadoop-hdfs</artifactId>
	    <version>${hadoop.version}</version>
	</dependency>
	<!-- hadoop end -->
  </dependencies>
</project>

设置完成后 保存后 我们看到progress这个窗口 会进行下载 应该就是导入包的过程
在这里插入图片描述
emmm…就这样 我等了一个多小时 还没下载完 出去跑了个步回来了都
没办法 修改镜像mirrors
在这里插入图片描述
在mirrors里面添加mirror那段代码

  
    <mirror>         
      <id>alimaven</id>
      <name>aliyun maven</name> 
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url> 
      <mirrorOf>central</mirrorOf> 
    </mirror> 
  

重启eclipse
然后 …我去
一分钟左右吧 就好了 气死我了

①将hdfs文件系统内文件打印到控制台

然后创建一个类 写个基本的读取文件
在这里插入图片描述
然后写代码 一定注意导入的包是不是hadoop下面的
文件路径 要确认下是否存在该文件
在这里插入图片描述

package qf.com.hdfs;



import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;

/*
*@author Shishuai E-mail:1198319583@qq.com
*@version Create time : 2019年5月22日下午8:48:47
*类说明:用java代码操作hdfs文件系统
*/
public class HdfsTest {
	public static void main(String[] args) throws IOException {
		readFileToConsole("/test/if.sh");
	}
	//读取hdfs文件系统的文件
	public static void readFileToConsole(String path) throws IOException {
		//获取配置
		Configuration conf = new Configuration();
		//配置name和value
		//第一个参数是我们以前配置过
		//第二个参数相当于总的hdfs系统的入口的地方 就是我们的命名空间
		conf.set("fs.defaultFS", "hdfs://192.168.37.111:9000");
		//获取hdfs文件系统的操作对象
		FileSystem fs = FileSystem.get(conf);
		FSDataInputStream fis = fs.open(new Path(path));
		//IOUtils.copyBytes(in, out, conf, close);
		//四个参数 一个输入流 一个输出流(我们直接打印到控制台)
		//一个是块大小 这里我们使用4096 一个是完事后是否关闭这些流 我们选择是
		IOUtils.copyBytes(fis, System.out, 4096, true);
	}
}

运行前要将集群启动起来

运行成功
在这里插入图片描述
这是写到控制台上
我们还可以写到Windows下文件去
注意导入的包 还要注意是URI 不是URL

②将hdfs文件系统内文件下载到Windows

package qf.com.hdfs;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URI;
import java.net.URISyntaxException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;

/*
*@author Shishuai E-mail:1198319583@qq.com
*@version Create time : 2019年5月22日下午8:48:47
*类说明:用java代码操作hdfs文件系统
*/
public class HdfsTest {
	public static void main(String[] args) throws IOException, InterruptedException, URISyntaxException {
		//readFileToConsole("/test/if.sh");
		readFileToLocal("/test/if.sh");
	}
	//读取hdfs文件系统的文件打印到Windows
		public static void readFileToLocal(String path) throws IOException, InterruptedException, URISyntaxException {
			FSDataInputStream fis = null;
			OutputStream out = null;
			try {
				//获取配置
				Configuration conf = new Configuration();
				//配置name和value
				//conf.set("fs.defaultFS", "hdfs://192.168.37.111:9000");
				//获取hdfs文件系统的操作对象 有七八种方法 我们再使用另外一种方法
				FileSystem fs = FileSystem.get(new URI("hdfs://192.168.37.111:9000"), conf, "root");
				fis = fs.open(new Path(path));
				out =  new FileOutputStream(new File("D:\\install\\hadoopdata\\test01.txt"));
				IOUtils.copyBytes(fis, out, 4096, true);
			} catch (Exception e) {
				// TODO: handle exception
			}finally {
				fis.close();
				out.close();
			}
		}
}

结果 原来是没有这个文件的
在这里插入图片描述
③上传文件到将hdfs文件系统内

package qf.com.hdfs;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

/*
*@author Shishuai E-mail:1198319583@qq.com
*@version Create time : 2019年5月22日下午8:48:47
*类说明:用java代码操作hdfs文件系统
*/
public class HdfsTest {
	static FileSystem fs = null;
	static {
		// 获取配置
		Configuration conf = new Configuration();
		// 配置name和value
		// conf.set("fs.defaultFS", "hdfs://192.168.37.111:9000");
		// 获取hdfs文件系统的操作对象 有七八种方法 我们再使用另外一种方法
		try {
			fs = FileSystem.get(new URI("hdfs://192.168.37.111:9000"), conf, "root");
		} catch (IOException e) {
			e.printStackTrace();
		} catch (InterruptedException e) {
			e.printStackTrace();
		} catch (URISyntaxException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) throws IOException, InterruptedException, URISyntaxException {
		// readFileToConsole("/test/if.sh");
		//readFileToLocal("/test/if.sh");
		copyFromLocal();
	}

	
	
	// 上传文件到hdfs文件系统内
	// 这次我们改进下 将获取配置和配置对象提取出来 放到上面 在静态代码块中
	public static void copyFromLocal() throws IOException, InterruptedException, URISyntaxException {
		fs.copyFromLocalFile(new Path("D:\\\\install\\\\hadoopdata\\\\123.txt"), new Path("/test/123"));
		System.out.println("finished..");
	}
}

先确认下要上传的路径下没有重名文件
在这里插入图片描述
在这里插入图片描述
运行完成后 再查一遍 就有了123
在这里插入图片描述
查看一下具体内容 没有错误
在这里插入图片描述

前面有个hdfs的shell命令忘记讲了

删除文件
hdfs dfs -rm [-R] /test/123

-R是递归删除
我们试一下 成功
在这里插入图片描述
试一下递归删除
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值