将IDEA创建的Spark程序打jar包,并上传集群运行

本文介绍了如何修改并打包Scala程序以使用Apache Spark进行大数据处理。包括如何调整代码以适应集群环境,打包程序及其依赖,以及如何上传并执行打包后的程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 打包过程

此内容是接着上一篇 的,需将WordCount.Scala程序稍作修改,并将“.setMaster(“local”)”改为备注。

package abc

import org.apache.spark.{SparkContext, SparkConf}

object WordCount {
  def main(args: Array[String]) {
    /**
      * SparkContext 的初始化需要一个SparkConf对象
      * SparkConf包含了Spark集群的配置的各种参数
      */
    val conf=new SparkConf()
//      .setMaster("local")//启动本地化计算
      .setAppName("testRdd")//设置本程序名称

    //Spark程序的编写都是从SparkContext开始的
    val sc=new SparkContext(conf)
    //以上的语句等价与val sc=new SparkContext("local","testRdd")
    /*
    val data=sc.textFile("d://env_spark//spark-2.3.3//README.md")//读取本地文件
    data.flatMap(_.split(" "))//下划线是占位符,flatMap是对行操作的方法,对读入的数据进行分割
      .map((_,1))//将每一项转换为key-value,数据是key,value是1
      .reduceByKey(_+_)//将具有相同key的项相加合并成一个
      .collect()//将分布式的RDD返回一个单机的scala array,在这个数组上运用scala的函数操作,并返回结果到驱动程序
      .foreach(println)//循环打印
     */
    val rdd = sc.parallelize(List(1,3,5,7,9)).map(_*2)
    val mapRDD = rdd.filter(_>10).collect()
    println(rdd.reduce(_+_))
    for(arg <- mapRDD)
      print(arg+" ")
    println()
  }
}

再进行打jar包,
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
“OK”,得到
在这里插入图片描述
选中外部依赖jar包,右键,“Remove”,
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 上传集群并执行

通过Xftp将 FirstSpark.jar 上传至虚拟机集群中的Master机器上,然后启动Spark集群,执行
在这里插入图片描述
结果如下:
在这里插入图片描述
Spark的WebUI显示:
在这里插入图片描述

-- 远程调试 调试教程 --

### 如何在虚拟机 Spark 集群运行 JAR 要在虚拟机上的 Spark 集群运行 JAR ,通常需要完成以下几个方面的操作: #### 1. 准备工作 确保 Spark 已经正确安装配置在虚拟机集群环境中。这括 Master 和 Slave 节点之间的网络通信正常以及 Hadoop 的正确配置[^4]。 #### 2. 构建 Scala 或 Java 项目 使用 IntelliJ IDEA 创建一个 Scala 项目(推荐),或者 Maven/Gradle 项目来编 Spark 应用程序代码。如果遇到依赖问题,可以通过手动导入 Spark 安装中的 jar 文件解决[^2]。 #### 3. 打包应用程序 通过 IntelliJ IDEA 将开发好的 Spark 程序打包成可执行的 fat-jar (uber-jar),其中含了所有的依赖项。具体步骤如下: - 在 IDEA 中右键点击项目 -> Add Framework Support -> 添加 Artifact。 - 设置 Main Class 指定输出路径。 - 使用 `Build` 功能生成最终的 jar 文件[^3]。 #### 4. 提交作业至 Spark Cluster 将构建好的 jar 文件上传到目标服务器(通常是 Master 节点)。可以利用 SCP 命令或其他工具实现文件传输。之后,在命令行界面输入以下格式启动应用: ```bash spark-submit \ --class com.example.MainClass \ --master spark://<Master_IP>:7077 \ /path/to/application.jar arg1 arg2 ... ``` 上述参数解释如下: - `--class`: 指定入口类名; - `--master`: 明确指明使用的 master URL 地址; - `/path/to/application.jar`: 表示实际的应用程序位置及其名称; - `arg1`, `arg2`: 可选参数传递给 main 方法[^1]。 注意:对于 Windows 用户来说可能还需要额外处理一些兼容性问题比如 winutils.exe 的缺失情况。 #### 5. 远程调试支持(可选项) 为了方便排查错误信息,可以在本地设置断点通过 IDE 实现远程调试功能。此过程涉及调整 JVM 启动脚本加入相应监听端口等内容。 --- ### 示例代码片段 下面是一个简单的 WordCount 示例用于演示如何创建 Spark Application: ```scala import org.apache.spark.sql.SparkSession object SimpleApp { def main(args: Array[String]): Unit = { val logFile = args(0) // Should be some file on your system val spark = SparkSession.builder.appName("Simple Application").getOrCreate() val logData = spark.read.textFile(logFile).cache() val numAs = logData.filter(line => line.contains("a")).count() println(s"Lines with a: $numAs") spark.stop() } } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值