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文件夹下了。

三、集群测试

相关推荐
材料苦逼不会梦到计算机白富美2 小时前
golang分布式缓存项目 Day 1
分布式·缓存·golang
拓端研究室TRL2 小时前
【梯度提升专题】XGBoost、Adaboost、CatBoost预测合集:抗乳腺癌药物优化、信贷风控、比特币应用|附数据代码...
大数据
黄焖鸡能干四碗2 小时前
信息化运维方案,实施方案,开发方案,信息中心安全运维资料(软件资料word)
大数据·人工智能·软件需求·设计规范·规格说明书
想进大厂的小王2 小时前
项目架构介绍以及Spring cloud、redis、mq 等组件的基本认识
redis·分布式·后端·spring cloud·微服务·架构
Java 第一深情2 小时前
高性能分布式缓存Redis-数据管理与性能提升之道
redis·分布式·缓存
编码小袁2 小时前
探索数据科学与大数据技术专业本科生的广阔就业前景
大数据
WeeJot嵌入式3 小时前
大数据治理:确保数据的可持续性和价值
大数据
ZHOU西口4 小时前
微服务实战系列之玩转Docker(十八)
分布式·docker·云原生·架构·数据安全·etcd·rbac
zmd-zk4 小时前
kafka+zookeeper的搭建
大数据·分布式·zookeeper·中间件·kafka
激流丶4 小时前
【Kafka 实战】如何解决Kafka Topic数量过多带来的性能问题?
java·大数据·kafka·topic