Spark-Scala语言实战(17)

ops/2024/9/23 18:24:19/

我带着大家一起来到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根目录,sparkjar目录

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

三、集群测试


http://www.ppmy.cn/ops/11809.html

相关文章

Pytorch-张量形状操作

接下来我们进入到pytorch的形状操作 介绍: 在搭建网络模型时&#xff0c;掌握对张量形状的操作是非常重要的&#xff0c;因为这直接影响到数据如何在网络各层之间传递和处理。网络层与层之间很多都是以不同的 shape 的方式进行表现和运算&#xff0c;我们需要掌握对张量形状的…

LeetCode 454.四数相加II(模拟,map.getOrDefault()的使用)

给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a; 0 < i, j, k, l < nnums1[i] nums2[j] nums3[k] nums4[l] 0 示例 1&#xff1a; 输入&#xff1a;nums1 [1,2], n…

【LeetCode热题100】【动态规划】单词拆分

题目链接&#xff1a;139. 单词拆分 - 力扣&#xff08;LeetCode&#xff09; 看能不能用字符串列表里面的字符串组成这个字符串&#xff0c;可以反复使用 即完全背包问题&#xff0c;同之前的完全平方数、零钱兑换&#xff0c;相当于给定几个数&#xff0c;可以反复用&#…

深兰科技入选2024全国“人工智能+”行动创新案例TOP100

近日&#xff0c;中科院《互联网周刊》联合eNET研究院、德本咨询、中国社会科学院信息化研究中心共同发布了《2024全国“人工智能”行动创新案例TOP100》榜单。经评委会层层遴选&#xff0c;深兰科技专为洛阳市打造的“工业智能化洛阳中心”项目成功入围该榜单。一同入围的还包…

线程池学习

一、线程池基础 1、什么是线程池 用一句话来概述就是&#xff1a;线程池是指在初始化一个多线程应用程序过程中创建一个线程集合&#xff0c;然后再需要执行新的任务时重用这些线程而不是新建线程。 2、为什么使用线程池 使用线程池最大的原因就是可以根据系统的需求和硬件环境…

Windows平台下的Oracle 19c补丁升级

Windows平台下的Oracle 19c补丁升级 文章目录 Windows平台下的Oracle 19c补丁升级第一章 概述第二章 安装前备份2.1 软件目录备份2.2 权限备份2.3 备份数据库 第三章 安装前检查3.1 查看数据库版本3.2 升级opatch版本 第四章 安装补丁4.1 设置环境变量4.2 关闭oracle相关服务4.…

第20篇 Vue命令简介

Vue.js 是一个用于构建用户界面的渐进式框架&#xff0c;它允许开发者通过使用命令行工具来创建和管理项目。以下是一些常用的 Vue 命令&#xff0c;这些命令通常在项目的根目录下使用 Vue CLI 运行。 1. **创建新项目**: bash vue create my-project 这将创建一个…

详解Qt中的JSON操作

JSON&#xff08;JavaScript Object Notation&#xff09;作为一种轻量级的数据交换格式&#xff0c;因其简洁的结构、易读性以及与多种编程语言的良好兼容性&#xff0c;在现代Web服务、API交互以及数据持久化场景中得到了广泛应用。Qt作为一款功能强大的跨平台应用开发框架&a…