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版本与我的不一致直接修改即可。

<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中集群下的路径。 

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

三、集群测试

  • 45
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 30
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Peng0426.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值