【用IDEA基于Scala2.12.18开发Spark 3.4.1 项目】
目录
- 使用IDEA创建Spark项目
- 设置sbt依赖
- 创建Spark 项目结构
- 新建Scala代码
使用IDEA创建Spark项目
打开IDEA后选址新建项目
选址sbt选项

配置JDK


debug
解决方案


相关的依赖下载出问题多的话,可以关闭idea,重启再等等即可。
设置sbt依赖
- 将sbt源设置为国内源
- 基于sbt添加依赖
- spark-sql
- spark-core
ThisBuild / version := "0.1.0-SNAPSHOT"ThisBuild / scalaVersion := "2.12.18"lazy val root = (project in file(".")).settings(name := "Spark341Learning",idePackagePrefix := Some("cn.lh.spark341"),resolvers += "HUAWEI" at "https://mirrors.huaweicloud.com/repository/maven",updateOptions := updateOptions.value.withCachedResolution(true),libraryDependencies += "org.apache.spark" %% "spark-core" % "3.4.1",libraryDependencies += "org.apache.spark" %% "spark-sql" % "3.4.1")
创建Spark 项目结构

新建Scala代码
Spark sql simleapp代码如下:
package cn.lh.spark341
package SQLimport org.apache.spark.sql.SparkSessionobject SimpleApp {def main(args: Array[String]): Unit = {// Spark开发三部曲// step 1: 准备Spark会话 spark sql 会话val spark = SparkSession.builder.appName("SimpeApp").master("local[2]").getOrCreate()// step 2:Spark处理逻辑val logF = "D:\\Programs\\spark-3.4.1-bin-hadoop3\\README.md"val logD = spark.read.textFile(logF).cache()val numA = logD.filter(line => line.contains("a")).count()val numB = logD.filter(line => line.contains("b")).count()println(s"Lines with a: $numA, Lines with b: $numB")// step 3: 关闭Spark会话spark.stop()}}

Spark RDD代码如下:
package cn.lh.spark341
package RDDimport org.apache.spark.{SparkConf, SparkContext}object RDDtest1 {def main(args:Array[String]): Unit ={
// Spark RDD开发三部曲
// step1: 创建SparkContext对象val conf = new SparkConf().setAppName("RDDtest1").setMaster("local[2]")val sc = new SparkContext(conf)
// step2: Spark处理逻辑代码val data = Array(1,2,3,4,5)val distData = sc.parallelize(data)val i: Int = distData.reduce((a, b) => a + b)
// step3:关闭SparkContext对象println(i)sc.stop()}}

到此,基于Scala2.12.18开发Spark 3.4.1 项目完成。
相关文章:
【用IDEA基于Scala2.12.18开发Spark 3.4.1 项目】
目录 使用IDEA创建Spark项目设置sbt依赖创建Spark 项目结构新建Scala代码 使用IDEA创建Spark项目 打开IDEA后选址新建项目 选址sbt选项 配置JDK debug 解决方案 相关的依赖下载出问题多的话,可以关闭idea,重启再等等即可。 设置sbt依赖 将sbt…...
HEVC 速率控制(码控)介绍
视频编码速率控制 速率控制: 通过选择一系列编码参数,使得视频编码后的比特率满足所有需要的速率限制,并且使得编码失真尽量小。速率控制属于率失真优化的范畴,速率控制算法的重点是确定与速率相关的量化参数(Quantiz…...
四大软件测试策略的特点和区别(单元测试、集成测试、确认测试和系统测试)
四大软件测试策略分别是单元测试、集成测试、确认测试和系统测试。 一、单元测试 单元测试也称为模块测试,它针对软件中的最小单元(如函数、方法、类、模块等)进行测试,以验证其是否符合预期的行为和结果。单元测试通常由开发人…...
ingress-nginx controller安装
文章目录 一、ingress-nginx controller安装环境 1.1 部署yaml1.2 镜像1.3 安装操作 一、ingress-nginx controller安装 环境 kubernetes版本:1.27.1操作系统:CentOS7.9 1.1 部署yaml deploy.yaml apiVersion: v1 kind: Namespace metadata:labels:…...
开源快速开发平台:做好数据管理,实现流程化办公!
做好数据管理,可以提升企业的办公协作效率,实现数字化转型。开源快速开发平台是深受企业喜爱的低代码开发平台,拥有多项典型功能,是可以打造自主可控快速开发平台,实现一对一框架定制的软件平台。在快节奏的社会中&…...
基于深度学习的裂纹图像分类研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
TypeScript入门学习汇总
1.快速入门 1.1 简介 TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准。 TypeScript 由微软开发的自由和开源的编程语言。 TypeScript 设计目标是开发大型应用,它可以编译成纯 JavaScript,编译出来的 JavaScript 可以运行在…...
Vue3使用vxetable进行表格的编辑、删除与新增
效果图如下: vxetable4传送门 一、引入插件 package.json中加入"vxe-table": "4.0.23",终端中执行npm i导入import {VXETable, VxeTableInstance...
JUC 并发编程之JMM
目录 1. 内存模型JMM 1. 1 主内存和工作内存 1.2 重排序 1. 内存模型JMM Java内存模型是Java虚拟机(JVM)规范中定义的一组规则,用于屏蔽各种硬件和操作系统的内存访问差异,保证多线程情况下程序的正确执行。Java内存模型规定了…...
k8s集群中安装kibana 7.x 踩坑
1. FATAL ValidationError: child "server" fails because [child "port" fails because ["port" must be a number]] 解决办法: 在环境变量中指定端口: - name: SERVER_PORTvalue: 5601 2. Kibana FATAL Error: [elast…...
CSS的一些基础知识
选择器: 选择器用于选择要应用样式的HTML元素。常见的选择器包括标签选择器(如 div、p)、类选择器(如 .class)、ID选择器(如 #id)和伪类选择器(如 :hover)。选择器可以根…...
解决多线程环境下单例模式同时访问生成多个实例
如何满足单例:1.构造方法是private、static方法、if语句判断 ①、单线程 Single类 //Single类,定义一个GetInstance操作,允许客户访问它的唯一实例。GetInstance是一个静态方法,主要负责创建自己的唯一实例 public class LazySi…...
转转闲鱼交易猫源码搭建
后台一键生成链接,独立后台管理 教程:修改数据库config/Conn.php 不会可以看源码里有教程 下载程序:https://pan.baidu.com/s/16lN3gvRIZm7pqhvVMYYecQ?pwd6zw3...
设计模式精华版汇总
以下是个人整理的设计模式汇总,将会持续更新工作和面试中经常用到的设计模式。 设计模式-装饰者模式(包装模式)- 案例分析和源码分析 设计模式-代理模式:控制访问的设计模式 - 案例分析 设计模式-门面模式…...
uniapp实现带参数二维码
view <view class"canvas"><!-- 二维码插件 width height设置宽高 --><canvas canvas-id"qrcode" :style"{width: ${qrcodeSize}px, height: ${qrcodeSize}px}" /></view> script import uQRCode from /utils/uqrcod…...
金融行业软件测试面试题及其答案
下面是一些常见的金融行业软件测试面试题及其答案: 1. 什么是金融行业软件测试? 金融行业软件测试是针对金融领域的软件系统进行验证和确认的过程,旨在确保软件在安全、稳定、可靠和符合法规要求的条件下运行。 2. 解释一下金融软件中的风险…...
强化学习QLearning 进行迷宫游戏和代码
强化学习是机器学习里面的一个分支。它强调基于环境而探索行动、学习,以取得最大化的预期收益。其灵感来源于心理学中的行为主义理论,既有机体如何在环境给予的奖励或者惩罚的刺激下,逐步形成对刺激的预期,产生能够最大利益的习惯…...
Vue2 第九节 过滤器
(1)定义:对要显示的数据进行特定格式化后再显示 (2)语法: ① 注册过滤器 1)Vue.filter(name, callback) 全局过滤器 2) new Vue({filters:{}}) 局部过滤器 ② 使用过滤器 1&…...
Swift 对象数组去重
使用 reduce 方法去重 使用 reduce 方法结合 contains 方法可以实现去重。reduce 方法用于将数组的元素进行累积计算,而 contains 方法用于检查元素是否已经存在于结果数组中。 struct SearchRecord: Equatable {let id: Intlet name: String }let records [Sear…...
代码随想录算法训练营day52 300.递增子序列 674.最长连续递增子序列 718.最长重复子数组
题目链接300.递增子序列 class Solution {public int lengthOfLIS(int[] nums) {int[] dp new int[nums.length];Arrays.fill(dp, 1);for(int i 0; i < nums.length; i){for(int j 0; j < i; j){if(nums[i] > nums[j]){dp[i] Math.max(dp[i], dp[j] 1);}}}int r…...
量子计算如何革新自然语言处理的语义分析
1. 量子计算与自然语言处理的交叉探索量子计算与自然语言处理的结合正在开辟一个全新的研究领域。作为一名长期关注量子计算应用的从业者,我见证了这项技术从理论构想逐步走向实际验证的过程。量子计算利用量子比特(qubit)的叠加态和纠缠特性…...
深入nRF5340双核通信:拆解LE Audio同步背后的IPC与DPPI机制
深入拆解nRF5340双核通信:LE Audio同步背后的IPC与DPPI实战解析 当你在调试nRF5340的LE Audio应用时,是否遇到过这样的场景:网络核(NET Core)已经收到了完整的音频数据包,但应用核(APP Core)的音频处理却出现了微秒级的延迟&#…...
从 0 到 1:用魔珐星云打造真实可用的智能健身私教【技术原理文章】
> 我在学习具身智能的实战文章,本文为技术文章,非广告一、健身交互痛点:传统数字人 / 健身工具缺失沉浸式陪伴式互动日常健身长期存在行业共性痛点:不管是纯视频课程,还是传统云端实时交互数字人,都难以…...
【YOLO全系列架构演进史】2 YOLOv8:解耦头、Anchor-free与多任务统一框架
YOLOv8:解耦头、Anchor-free与多任务统一框架 1.1 总体定位与认知地图 1.1.1.1 我们为什么需要重新理解YOLOv8 YOLOv8在2023年发布时,很多人以为它只是YOLOv5的增量升级。但如果我们把神经网络看作一条工厂流水线,YOLOv8实际上把整条流水线的三个核心工位都换了:原料处理…...
AI 自动剪辑不是‘一键成片’:90% 的技术团队踩在逻辑断层与工程适配陷阱里
当团队首次将「AI 自动剪辑」纳入短视频生产管线时,最典型的误判是把它当作一个黑盒触发器:导入原始素材 → 点击「智能剪辑」→ 导出成品。这种认知忽略了背后三重断裂——语音转写与气口检测的精度断层、镜头语义理解与叙事逻辑的错位、以及单机操作与…...
百考通:AI一键生成期刊论文写作,全流程智能化支撑,让学术创作更高效
在学术研究领域,期刊论文的撰写是成果输出的关键环节,却也让众多科研工作者与学生倍感压力:选题迷茫、逻辑梳理困难、格式规范复杂、内容提炼耗时,严重拖慢了学术成果的发表节奏。百考通(https://www.baikaotongai.com…...
+86环境下“纸飞机“登录异常排查:第三方开源客户端的认证与网络适配测试
近期在针对一款基于 MTProto 协议的即时通讯工具进行客户端适配测试时,发现其官方版本在 86 号段环境下存在较为突出的登录与连接稳定性问题。本文记录问题复现过程,以及基于开源代码二次开发的优化实践。一、登录异常现象在 86 手机号、新设备登录场景下…...
机智云物联网边缘管理系统通过国产化硬件适配认证:实战解析边缘计算架构与生态价值
1. 项目概述:从“云端”到“边缘”,一次关键的认证意味着什么?最近,我们团队主导的“机智云物联网边缘管理系统”成功通过了某主流国产化硬件平台的适配认证。这个消息在内部技术群里传开时,很多同事的第一反应是&…...
OpenClaw 用户通过 Taotoken 快速接入并启用 Agent 工作流
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 OpenClaw 用户通过 Taotoken 快速接入并启用 Agent 工作流 对于使用 OpenClaw 框架构建 AI Agent 的开发者而言,能够灵…...
终极跨平台3D资产迁移革命:DazToBlender插件完整指南
终极跨平台3D资产迁移革命:DazToBlender插件完整指南 【免费下载链接】DazToBlender Daz to Blender Bridge 项目地址: https://gitcode.com/gh_mirrors/da/DazToBlender 你是否曾经在Daz Studio中精心创作了一个完美的3D角色,却因为无法在Blende…...
