首页 > 其他分享 >maven打包jar包给spark

maven打包jar包给spark

时间:2022-10-06 17:33:05浏览次数:64  
标签:args jar maven master org spark

@

目录

安装maven

官网安装maven

1,官网下载到本地,Binary是可执行版本,已经编译好可以直接使用。
Source是源代码版本,需要自己编译成可执行软件才可使用。
在这里插入图片描述

2,查看安装路径,配置环境变量

在这里插入图片描述
3,配置好环境变量
在这里插入图片描述
4,cmd测试
在这里插入图片描述

配置本地仓库

1,Maven文件夹内创建maven-repository文件夹,用作maven的本地库

在这里插入图片描述

2,D:\Maven\apache-maven-3.8.6\conf下找到settings.xml文件,找到节点localRepository,在注释外添加仓库路径

在这里插入图片描述

localRepository节点用于配置本地仓库,本地仓库其实起到了一个缓存的作用,它的默认地址是 C:\Users\用户名.m2。
当我们从maven中获取jar包的时候,maven首先会在本地仓库中查找,如果本地仓库有则返回;如果没有则从远程仓库中获取包,并在本地库中保存。
此外,我们在maven项目中运行mvn install,项目将会自动打包并安装到本地仓库中。
在这里插入图片描述

配置镜像

可以去官网查看

1.在settings.xml配置文件中找到mirrors节点添加如下配置(注意要添加在两个标签之间,其它配置同理)

#代码如下

<!-- 阿里云仓库 -->
    <mirror>
      <id>aliyunmaven</id>
      <mirrorOf>*</mirrorOf>
      <name>阿里云公共仓库</name>
      <url>https://maven.aliyun.com/repository/public</url>
    </mirror>

在这里插入图片描述

idea配置maven

1,在全局设置maven的配置文件位置
在这里插入图片描述
2,设置maven文件位置
在这里插入图片描述
3,创建一个maven项目,如果创建的时候太慢,可以提前把所需要的插件下载下来放到自己的本地仓库中!!
在这里插入图片描述
4,修改pom文件,文件中有hadoop和spark需要的依赖,可根据网址去复制
切记要对应好你hadoop集群和spark、jdk的版本

<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>org.example</groupId>
  <artifactId>SparkStudyHuhy</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>SparkStudyHuhy</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client -->
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-client</artifactId>
      <version>3.3.0</version>
      <scope>provided</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql -->
    <dependency>
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-sql_2.13</artifactId>
      <version>3.3.0</version>
      <scope>provided</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core -->
    <dependency>
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-core_2.13</artifactId>
      <version>3.3.0</version>
    </dependency>
  </dependencies>
  <build>
    <finalName>SparkStudyCases</finalName>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>3.4.0</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

如果出现报红的情况,可以试着重新加载一下依赖

在这里插入图片描述
5,创建java文件,代码实现查看hdfs路径、两次查看文件内容,上传文件等
,注意查看代码中的参数,在命令会中调用方法

case "2cat":doubleCat(args);break;
case "load":copyFileWithProgress(args);break;
case "1ls":listStatus(args);break;

package org.example;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.io.IOUtils;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;
public class FileSystemAPIMain {

    public static void main(String[] args) {
        new FileSystemAPIMain().start(args);
    }

    private void start(String[] args) {
        String choice=args[0];
        switch (choice){
            case "2cat":doubleCat(args);break;
            case "load":copyFileWithProgress(args);break;
            case "1ls":listStatus(args);break;
        }
        //doubleCat(args);
        //copyFileWithProgress(args);
        //listStatus(args);
    }

    private void cat(String[] args) {
        String uri = args[1];
        Configuration conf = new Configuration();
        FileSystem fs;
        InputStream in = null;

        try {
            fs = FileSystem.get(URI.create(uri), conf);
            in = fs.open(new Path(uri));
            IOUtils.copyBytes(in, System.out, 4096, false);
        }catch (Exception e) {
            System.err.println(e.toString());
        } finally {
            IOUtils.closeStream(in);
        }

    }

    private void doubleCat(String[] args) {
        String uri = args[1];
        Configuration conf = new Configuration();
        FileSystem fs;
        FSDataInputStream in = null;

        try {
            fs = FileSystem.get(URI.create(uri), conf);
            in = fs.open(new Path(uri));
            IOUtils.copyBytes(in, System.out, 4096, false);
            in.seek(0);
            IOUtils.copyBytes(in, System.out, 4096, false);
        }catch (Exception e) {
            System.err.println(e.toString());
        } finally {
            IOUtils.closeStream(in);
        }

    }

    private void copyFileWithProgress(String[] args) {
        String src = args[1];
        String dst = args[2];
        Configuration conf = new Configuration();
        FileSystem fs;
        InputStream in = null;
        OutputStream out = null;
        try {
            in = new BufferedInputStream(new FileInputStream(src));
            fs = FileSystem.get(URI.create(dst), conf);
//            out = fs.create(new Path(dst), new Progressable() {
//                @Override
//                public void progress() {
//                    System.out.print("*");
//                }
//            });
            out = fs.create(new Path(dst), () -> System.out.print("*"));
            IOUtils.copyBytes(in, out, 4096, false);
        }catch (Exception e) {
            System.err.println(e.toString());
        } finally {
            IOUtils.closeStream(in);
            IOUtils.closeStream(out);
        }
    }

    private void listStatus(String[] args) {
        String uri = args[1];
        Configuration conf = new Configuration();
        Path[] paths = new Path[args.length-1];
        for(int i = 0; i < paths.length; i++) {
            paths[i] = new Path(args[i+1]);
        }
        try {
            FileSystem fs = FileSystem.get(URI.create(uri), conf);
            FileStatus[] status = fs.listStatus(paths);
            Path[] listedPaths = FileUtil.stat2Paths(status);
            for(Path p : listedPaths) {
                System.out.println(p);
            }
        }catch (Exception e) {
            System.err.println(e.toString());
        } finally {
        }
    }

}

打包jar包

在这里插入图片描述
如果说项目修改了要重新打包jar包就需要点击clean再点击package

1,查看jar包
在这里插入图片描述
2,上传到我们的集群中使用
在这里插入图片描述

测试

root目录下执行

/usr/local/spark-3.3.0-bin-hadoop3/bin/spark-submit --class org.example.FileSystemAPIMain SparkStudyCases.jar /

调用listStatus(args)查看hdfs根目录下的文件

root@master:~# /usr/local/spark-3.3.0-bin-hadoop3/bin/spark-submit --class org.example.FileSystemAPIMain SparkStudyCases.jar 1ls /
22/10/06 09:09:45 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
hdfs://master:8020/spark-logs
hdfs://master:8020/tmp
hdfs://master:8020/user
hdfs://master:8020/usr
22/10/06 09:09:46 INFO ShutdownHookManager: Shutdown hook called
22/10/06 09:09:46 INFO ShutdownHookManager: Deleting directory /tmp/spark-350d914b-afea-4244-8e74-aa16f3cc2ac4
root@master:~#

调用doubleCat(args)方法两次查看文件内容

首先把需要查看内容的文件上传到hdfs路径上

root@master:~# ls
hadoop-3.3.0.tar  jdk-8u241-linux-x64.tar.gz  snap                         SparkStudyCases.jar  test.sh
hoyeong.txt       profile.sh                  spark-3.3.0-bin-hadoop3.tgz  start.sh
root@master:~# cat hoyeong.txt
zzzzzz
root@master:~# hadoop fs -cat /user/hoyeong.txt
zzzzzz
root@master:~#

两次查看hdfs上的文件内容

/usr/local/spark-3.3.0-bin-hadoop3/bin/spark-submit --class org.example.FileSystemAPIMain SparkStudyCases.jar 2cat /user/hoyeong.txt

root@master:~# /usr/local/spark-3.3.0-bin-hadoop3/bin/spark-submit --class org.example.FileSystemAPIMain SparkStudyCases.jar 2cat /user/hoyeong.txt
22/10/06 09:15:02 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
zzzzzz
zzzzzz
22/10/06 09:15:03 INFO ShutdownHookManager: Shutdown hook called
22/10/06 09:15:03 INFO ShutdownHookManager: Deleting directory /tmp/spark-f2b42e1b-df61-49a6-8619-bd99df6986c1
root@master:~#

调用copyFileWithProgress(args)上传本地文件到hdfs

/usr/local/spark-3.3.0-bin-hadoop3/bin/spark-submit --class org.example.FileSystemAPIMain SparkStudyCases.jar load hoyeong.txt /test/hoyeong.txt

需要注意的是上传的路径是已经存在的,load是代码中指定的参数,和上面的2cat,1ls一样

root@master:~# ls
hadoop-3.3.0.tar  jdk-8u241-linux-x64.tar.gz  snap                         SparkStudyCases.jar  test.sh
hoyeong.txt       profile.sh                  spark-3.3.0-bin-hadoop3.tgz  start.sh
root@master:~# /usr/local/spark-3.3.0-bin-hadoop3/bin/spark-submit --class org.example.FileSystemAPIMain SparkStudyCases.jar load hoyeong.txt /test/hoyeong.txt
22/10/06 09:19:49 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
**22/10/06 09:19:50 INFO ShutdownHookManager: Shutdown hook called
22/10/06 09:19:50 INFO ShutdownHookManager: Deleting directory /tmp/spark-e3e4c25d-032b-4537-a87b-5ef467843f30
root@master:~# hadoop fs -ls /test/
Found 1 items
-rw-r--r--   3 root supergroup          7 2022-10-06 09:19 /test/hoyeong.txt
root@master:~#

标签:args,jar,maven,master,org,spark
From: https://www.cnblogs.com/hwiung/p/16758070.html

相关文章

  • maven源修改
    <?xmlversion="1.0"encoding="UTF-8"?><settingsxmlns="http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"......
  • SparkCore:累加器和广播变量
    累加器累加器(分布式共享只写变量):用来把Executor端变量信息聚合到Driver端。在Driver程序中定义的变量,在Executor端的每个Task都会得到这个变量的一份新的副本,每......
  • Maven仓库解析
    Maven仓库解析​​Maven仓库解析​​​​仓库分类​​​​远程仓库配置​​​​本地仓库配置​​github地址​​​https://github.com/a18792721831/studyMaven.git​​​......
  • Maven项目的目录结构
    github地址​​​https://github.com/a18792721831/studyMaven.git​​​文章列表:Maven最全知识[INFO]GeneratingprojectinBatchmodeMaven项目的目录结构Maven仓......
  • 大数据常用Maven依赖
    1<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"2xsi:schemaLocation="http://maven.apache.org/P......
  • Ideal安装 +设置maven+mysql
    1、下载Idea安装,地址:https://www.jetbrains.com/idea/download/other.html 2、下载jdk,安装jdk,配置环境变量     新建JAVA_HOME 系统变量,设置jdk安装路径......
  • jenkins+gitlab+maven+docker部署项目之jenkins用户权限管理
    一、用户管理jenkins自身带有权限管理,入口:系统管理-->全局安全配置,这里的权限配置太过简略,没有角色的概念,显然无法满足我们复杂的需求,所以在这个时候引入了Jenkins的一个......
  • SpringBoot项目的pom.xml文件中maven-project-info-reports-plugin报红解决办法
    今天在创建SpringBoot项目时发现导包是没有任何问题的,但是pom文件中maven-project-info-reports-plugin一直有报红,如下图所示:在该pom文件中引入maven-project-info-repor......
  • 【Maven】——Maven的打包方式
    我们新建一个Maven项目时,通常会默认打包方式。例如<packaging>pom</packaging>,它们到底是什么意思呢?  打包类型有pom、jar、war三种。打包类型说明pom父级......
  • 0639-6.1.1-Spark读取由Impala创建的Parquet文件异常分析
    作者:冉南阳1问题重现测试环境:1.RedHat7.42.CDH6.1.13.使用root进行操作1.使用Impala创建Parquet表并插入数据。createtabletest_parquet(idint,namestring)storedasp......