使用Maven对Java独立应用程序进行编译打包

一、 安装Maven

1.解压,移动安装包
sudo tar -zxf ~/apache-maven-3.9.6-bin.tar.gz -C /usr/local/
cd /usr/local/
sudo mv apache-maven-3.9.6/ ./maven-3.9.6
sudo chown -R qiangzi ./maven-3.9.6

二、Java应用程序代码

1.版本信息:

Spark-2.1.0、Maven-3.9.6

(1)在终端执行命令创建文件夹sparkapp2作为应用程序根目录
cd ~ #进入用户主文件夹
mkdir -p ./sparkapp2/src/main/java
(2)在 ./sparkapp2/src/main/java 下建立一个名为 SimpleApp.java 的文件
cd ~
vim ./sparkapp2/src/main/java/SimpleApp.java

        添加代码如下:

/*** SimpleApp.java ***/
import org.apache.spark.api.java.*;
import org.apache.spark.api.java.function.Function;
import org.apache.spark.SparkConf;public class SimpleApp {                                                                                                    public static void main(String[] args) {String logFile = "file:///usr/local/spark-2.1.0/README.md"; // Should be some file on your systemSparkConf conf=new SparkConf().setMaster("local").setAppName("SimpleApp");JavaSparkContext sc=new JavaSparkContext(conf);JavaRDD<String> logData = sc.textFile(logFile).cache();long numAs = logData.filter(new Function<String, Boolean>() {public Boolean call(String s) { return s.contains("a"); }}).count();long numBs = logData.filter(new Function<String, Boolean>() {                                                               public Boolean call(String s) { return s.contains("b"); }                                                           }).count();                                                                                                             System.out.println("Lines with a: " + numAs + ", lines with b: " + numBs);                                          }                                                                                                                   }  
(3)该程序依赖Spark Java API,通过Maven进行编译打包。在./sparkapp2目录中新建文件pom.xml,命令如下:
cd ~/sparkapp2
vim pom.xml
(4)在pom.xml文件中添加内容如下,声明该独立应用程序的信息以及与Spark的依赖关系:
<project><groupId>cn.edu.xmu</groupId><artifactId>simple-project</artifactId><modelVersion>4.0.0</modelVersion><name>Simple Project</name><packaging>jar</packaging><version>1.0</version><repositories><repository><id>jboss</id><name>JBoss Repository</name><url>http://repository.jboss.com/maven2/</url></repository></repositories><dependencies><dependency> <!-- Spark dependency --><groupId>org.apache.spark</groupId><artifactId>spark-core_2.11</artifactId> //这里是 Spark 的核心库,针对 Scala 2.11 版本。<version>2.1.0</version> //这里是 2.1.0 版本的 Spark</dependency></dependencies>
</project>
2. 使用Maven打Java程序
(1)为了保证maven能够正常运行,先执行如下命令检查整个应用程序的文件结构:
cd ~/sparkapp2
find .
(2)文件结构如下图:

(3)接着,我们可以通过如下代码将这整个应用程序打包成Jar(注意:电脑需要保持连接网络的状态,而且首次运行需要下载依赖包,时间消耗太长):
cd ~/sparkapp2
/usr/local/maven-3.9.6/bin/mvn package
(4)如出现下信息,说明生成Jar包成功:

(5)如果运行Maven编译打包过程很慢,是因为需要到国外网站下载很多的依赖包,国外网站速度很慢,可以更改为国内的仓库地址,修改Maven的配置文件,让Maven到国内的阿里云仓库下载相关依赖,提高打包的速度。
cd /usr/local/maven-3.9.6/conf
vim settings.xml
(6)将settings.xml中的文本改为以下内容:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0http://maven.apache.org/xsd/settings-1.0.0.xsd">
<mirrors><mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url></mirror><mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云谷歌仓库</name><url>https://maven.aliyun.com/repository/google</url></mirror><mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云阿帕奇仓库</name><url>https://maven.aliyun.com/repository/apache-snapshots</url></mirror><mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云spring仓库</name><url>https://maven.aliyun.com/repository/spring</url></mirror><mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云spring插件仓库</name><url>https://maven.aliyun.com/repository/spring-plugin</url></mirror>
</mirrors>
</settings>
3.通过spark-submit 运行程序
(1)最后,可以通过将生成的jar包通过spark-submit提交到Spark中运行,如下命令:
/usr/local/spark-2.1.0/bin/spark-submit --class "SimpleApp" ~/sparkapp2/target/simple-project-1.0.jar
# 上面命令执行后会输出太多信息,使用下面命令查看想要的结果
/usr/local/spark-2.1.0/bin/spark-submit --class "SimpleApp" ~/sparkapp2/target/simple-project-1.0.jar 2>&1 | grep "Lines with a"
(2)得到的结果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/8349.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python机器翻译包Translate:多语种翻译利器

Python机器翻译包Translate&#xff1a;多语种翻译&#xff0c;效果卓越&#xff01; 随着全球化的不断深化&#xff0c;跨语言沟通成为人们越来越重要的需求。而如今&#xff0c;Python作为一种功能强大的编程语言&#xff0c;正以其独特的优势和实用性&#xff0c;在机器翻译…

设计软件有哪些?渲染软件篇(1),渲染100邀请码1a12

做设计要用到很多软件&#xff0c;今天我给大家介绍一些渲染方面的&#xff0c;仅供参考。 1、渲染100(http://www.xuanran100.com/?ycode1a12) 渲染100是网渲平台&#xff0c;为设计师提供高性能的渲染服务。通过它设计师可以把本地渲染移到云端进行&#xff0c;速度快价格便…

APP广告变现:自刷的秘密与规则

在移动互联网时代&#xff0c;广告已成为众多APP盈利的主要方式之一。对于开发者和运营者而言&#xff0c;如何通过广告变现提高收益是他们必须关注的问题。然而&#xff0c;在众多的变现方法中&#xff0c;“自刷广告”这一概念可能让一些人感到迷惑。实际上&#xff0c;只要在…

高频SQL 第二高的薪水

题目信息 Employee 表&#xff1a; ------------------- | Column Name | Type | ------------------- | id | int | | salary | int | ------------------- 在 SQL 中&#xff0c;id 是这个表的主键。 表的每一行包含员工的工资信息。查询并返回 Employee 表…

巨资回流,量子投资热潮再起

一股新的信心和资金浪潮正在席卷量子计算产业。 2023年4月30日&#xff0c;澳大利亚联邦政府和昆士兰州政府宣布共同出资9.4亿澳元&#xff08;约合6.2亿美元&#xff09;&#xff0c;支持美国初创企业PsiQuantum在布里斯班附近建设一台大型量子计算机。这项投资是最新的迹象之…

字符串的赋值

因为字符串本质上就是数组&#xff0c;因此它的赋值也具有数组的特点&#xff1a;只能在初始化时用等号。 1&#xff0e;字符串的初始化 方法一&#xff1a;指定大小 char s[6]"Hello"; //指定字符串最大占用6个的char型内存单元 虽然看上去是将整个字符串赋给了…

RT-IoT2022 数据集-扩展数据(自制方法)

数据集官网Discover datasets around the world!https://archive.ics.uci.edu/dataset/942/rt-iot2022RT-IoT2022 是源自实时物联网基础设施的专有数据集&#xff0c;作为集成了各种物联网设备和复杂网络攻击方法的综合资源而引入。该数据集包含正常和对抗性网络行为&#xff0…

modbus协议完整介绍

一、MODBUS通讯协议完整介绍&#xff08;全文10000字以上&#xff09; - 知乎 modbus协议之-01-初次见面_一个寄存器有几个字节-CSDN博客

基于ConvNeXt网络的图像识别

1、前言 ConvNeXt 网络基于传统的卷积神经网络&#xff0c;与当下 transformer当道而言简直是一股清流 ConvNeXt并没有特别复杂或者创新的结构 ConvNeXt 网络有五种大小&#xff0c;可以参考下面 2、项目实现 完整的项目如下&#xff1a; 这里参考了网上的ConvNeXt 模型&…

Springboot+Vue项目-基于Java+MySQL的个人云盘管理系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

js知识库

script标签的async和defer作用及区别 1&#xff09;都会起到延迟执行js的作用 2&#xff09;defer&#xff1a;先进行html解析&#xff0c;解析过程中会下载js文件&#xff0c;但不会执行&#xff1b;当html完全解析完&#xff0c;才会执行js部分。多个用defer修饰的js是顺序…

速卖通vs亚马逊vs虾皮,三大跨境电商平台详细对比

近几年跨境电商行业可以说是十分火热&#xff0c;跨境电商平台也是非常多&#xff0c;如亚马逊、速卖通、虾皮、lazada等等。今天就给大家分享速卖通、亚马逊和虾皮这三个平台之间的区别&#xff0c;帮助大家快速找到适合自己的平台。 三大跨境电商平台详细对比 速卖通 &#x…

视图地一些笔记

1. 创建视图&#xff08;CREATE VIEW&#xff09;时&#xff0c;通常不会输出任何结果集。它只是一种定义逻辑视图的方式&#xff0c;在数据库中保存一个查询定义。要查看视图中的内容&#xff0c;你需要使用 SELECT 语句查询该视图。例如&#xff0c;如果你创建了名为 new_us…

神经网络的基础:从感知机到复杂网络的进化

文章目录 一、神经网络的例子二、理解神经信号的传递2.1 感知机的结构和功能2.2 优化函数2.3 明确表示偏置 三、理解感知机和激活函数的作用3.1 基础感知机模型3.2 激活函数的引入 一、神经网络的例子 理解感知机 在探索神经网络之前&#xff0c;我们首先回顾了感知机的基本概…

iOS抓包工具——Stream

[清风穆云 ](https://cloud.tencent.com/developer/user/4224041) iOS抓包工具——Stream 关注作者 前往小程序&#xff0c;Get_更优_阅读体验&#xff01; 立即前往 腾讯云 开发者社区 文档建议反馈控制台 首页 学习 活动 专区 工具 TVP [最新优惠活动 ](http…

关键字标识

题目描述 给定一个关键词集合 words 和一个字符串 inputStr,要求将 inputStr 中出现的所有关键词用标签标记: 关键词标签的起始为,结束为。 把可以合并的标签进行合并,即使用最少的标签。合并规则如下: 关键词相邻则进行合并,如 ab、cd为关键词,且在字符串中相邻,则合…

gtest Unitest 打桩优化

接口(宏)简单介绍 SMOCK StubMock类的单例对象 V_ADDR 获取类虚拟函数地址 O_ADDR 获取重载函数地址&#xff08;只支持类成员函数&#xff09; NF_SMOCK 函数打桩 F_SMOCK 函数打桩&#xff0c;会去调用NF_SMOCK&#xff0c;调用时默认第一个参数为0 SMOCK_CLEAR 清除所有…

可视化实验三 Matplotlib库绘图及时变数据可视化

1.1 任务一 1.1.1 恢复默认配置 #绘图风格&#xff0c;恢复默认配置 plt.rcParams.update(plt.rcParamsDefault)#恢复默认配置 或者 plt.rcdefaults() 1.1.2 汉字和负号的设置 import matplotlib.pyplot as plt plt.rcParams["font.sans-serif"]"SimH…

java设计模式七 适配器

适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;它的核心思想是将一个接口转换成客户端期望的另一个接口&#xff0c;使得原本不兼容的接口可以协同工作。在Java中&#xff0c;适配器模式可以通过类继承或对象组合的方式来实现。 ### Jav…

物体移动方向和转向问题

比如在屏幕中有一条鱼&#xff0c;它可以向左或向右移动&#xff0c;固定时间旋转方向调换移动方向。 using System.Collections; using System.Collections.Generic; using UnityEngine;public class fishMove: MonoBehaviour {public int speed 3;public Vector3 moveDirec…