Spark-Scala语言实战(17)

我带着大家一起来到Linux集群环境下,学习我们的spark。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。

Spark-Scala语言实战(16)-CSDN博客文章浏览阅读1.8k次,点赞49次,收藏28次。之前的文章,我们都是在IDEA的非集群环境下进行的操作,但是,每一个学习spark的人都应该知道我们学习spark的目的都是为了最终能够完成分布式计算系统任务,它具有的大规模数据集上快速进行复杂分析和计算的能力让它在集群环境下保守欢迎。今天的文章,我会带着大家一起来到Linux集群环境下,学习我们的spark。希望我的文章能帮助到大家,也欢迎大家来我的文章下交流讨论,共同进步。https://blog.csdn.net/qq_49513817/article/details/137727287这篇文章起我会带来两种方式将我们开发环境(IDEA)的代码文件打jar包到我们的集群环境下运行。今天的文章首先来讲我们的本地模式。

一、知识回顾

之前的文章中我们讲了如何在我们集群环境下启动spark并编写我们的代码。

启动spark只需要cd到我们的spark路径下输入我们的spark-shell即可

编写spark代码就可以更直观清晰的看到我们的RDD的创建过程。

今天的文章,我会交给大家如何将IDEA中的spark代码打jar包到我们的集群环境下运行。

二、本地jar包

创建项目配置路径

首先创建我们的maven项目

然后再配置我们的pom.xml文件

这是我已经配置好的代码,如果你们的spark,Scala版本与我的不一致直接修改即可。

Scala 复制代码
<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.example</groupId>
    <artifactId>test33</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>Archetype - test33</name>
    <url>http://maven.apache.org</url>
    <dependencies>
        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-library</artifactId>
            <version>2.12.15</version>
        </dependency>

        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-compiler</artifactId>
            <version>2.12.15</version>
        </dependency>

        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.12</artifactId>
            <version>3.0.0</version>
        </dependency>


    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            00    <!-- 如果有一个主类,可以在这里指定 -->
                            <mainClass>com.exmple.test99</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

设置中将我们的maven路径添加到我们的构建工具中(maven文章附件中有,可自行下载)

这里的主路径和设置文件都要添加。

最后在我们的项目结构库中添加我们的spark与Scala。

路径选择我们的Scala根目录,spark的jar目录

jar包

创建我们的 Scala类,编写代码

这边是我的代码,路径分别是读取和输出保存文件,均设置是我们Linux中集群下的路径。

Scala 复制代码
package com.peng
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
 **
 *
 * 注:这是在IDEA上直接运行程序
 * 若要打包上传到Spark-shell上运行,需把代码中的".setMaster("local[*]")"删除,
 * 并修改保存路径为"/Tipdm/Spark/Result/house"再打包上传。
 *
 *
 *
 *
 */
object p1 {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setMaster("local[*]").setAppName("zufang")
    val sc = new SparkContext(conf)

    //依次是:数据id号 标题 链接 地区 地点 地铁站 人数 日期
    //对应的字段依次是:
    //id title link district bizcircle tagList onsale validdate
    val input: RDD[String] = sc.textFile("C://opt/spark-3.2.1/P")

    //数据清洗,第6个字段"地铁站"有些数据为空
    val clean: RDD[Array[String]] = input
      .filter(_.split("\\t")(5) != "")
      .map(line => {
        val data = line.split("\\t")
        (data)
      })

    //缓存到内存
    clean.cache()

    //统计各地区的租房人数
    val peopleCount: RDD[(String, Int)] = clean.map(data => (data(3),data(6).toInt)).reduceByKey(_+_)

    //保存数据到本地
      peopleCount.saveAsTextFile("C://opt/spark-3.2.1/P")
  }

}

这个读取文件大家可以自行编写。

最后给我们的jar添加依赖性模块

构建jar包,完成

现在就可以jar包文件成功添加到我们的out文件夹下了。

三、集群测试

相关推荐
2601_9622029812 分钟前
首衡集采集配怕破损?万象包装优化降损耗
大数据·人工智能
TK泰妞34 分钟前
从零搭建高效可复用的提示词工作流
大数据·人工智能
兴通物联科技44 分钟前
对俄出口诚实标识 2026 时间节点与产线赋码采集技术方案
大数据·服务器·单片机·嵌入式硬件·深度学习·计算机视觉
数据小玩子1 小时前
数据合规共治:工业园区多部门协同亩均效益智能评价方案
大数据·数据分析·精益工程
陕西企来客1 小时前
NAP 信息统一治理:构建生成式 AI 时代企业 GEO 增长的坚实底座-企来客科技NAP方法论-企来客科技NAP信息治理实战解析
大数据·人工智能·科技
CubeSandbox1 小时前
沙箱是选项,不是标配:花椒 Agent 平台的架构思考与 Cube 实践
大数据·人工智能·架构
重生之我是小技1 小时前
Selenium自动化爬虫怎么实现?Python实战与反爬应对指南
大数据
55873 生态系统1 小时前
55873 全域文明生态系统:技术价值矩阵与底层创新内核
大数据·人工智能·55873全域文明生态体系·55873操作系统
2601_962355232 小时前
深度解析279模式:【279模式的最新发展趋势2025】行业白皮书
大数据·人工智能·pygame
龙亘川2 小时前
数智赋能民生保障:亘川智城智慧民政系统构建民政一体化业务闭环
大数据·人工智能·智慧城市·开源软件·数据可视化·政务