Spark开发学习之使用idea开发Spark应用

article/2025/10/9 2:55:22

Spark学习之使用idea开发Spark应用

该文章是基于jdk1.8,idea开发工具,maven都配置好的前提下进行讲述的。

背景

由于已经在远程centos服务器上部署了saprk服务,但基于spark的应用程序的代码却是在本地idea开发的,那么如何能让本地开发的spark代码能在远程spark服务上运行调试便成了迫切需要解决的问题。

idea下scala插件安装

idea开发工具,File->setting->Plugins->Browse respositories,搜索scala,下载和自己idea版本对应的插件。

idea下新建maven项目

在这里插入图片描述

配置项目的Scala

在这里插入图片描述

配置maven依赖

修改pom.xml文件,新增如下内容:

 <dependencies><dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.12</artifactId><version>3.1.2</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>2.6.5</version></dependency>
</dependencies><build><plugins><plugin><groupId>org.scala-tools</groupId><artifactId>maven-scala-plugin</artifactId><version>2.15.2</version><executions><execution><goals><goal>compile</goal><goal>testCompile</goal></goals></execution></executions></plugin></plugins>
</build>

其中,spark-core版本要和《spark3.1.2 单机安装部署》文章中部署的spark版本一致,因为在文章《Spark开发实战之Scala环境搭建》中本地scala配置的版本是2.12,否则程序运行会报错。

配置完成后等待依赖包加载完毕。

新建一个Scala对象,代码如下:

object WordCount {def main(args: Array[String]): Unit = {val conf = new SparkConf().setAppName("WordCount").setMaster("spark://localhost:7078")val sc = new SparkContext(conf)val file = sc.textFile("/home/bigData/softnew/spark/README.md")//    val rdd = file.flatMap(line => line.split("")).map(word => (word,1)).reduceByKey(_+_)//    rdd.collect()//    rdd.foreach(println)//    rdd.collectAsMap().foreach(println)println("#####################"+file.count()+"#####################")println("#####################"+file.first()+"#####################")}}

配置远程部署路径

Scala文件最终会被打包成jar文件,然后使用spark-submit工具提交到spark主节点执行任务。由于spark-submit工具在远程服务器,所以需要配置jar包到远程服务器的部署,如下:

idea Tools->deployment->configuration,弹出deployment窗口,点击+号,按下图选择Type,name自定义:
在这里插入图片描述

配置connection:

在这里插入图片描述

其中,sftp host、user name、Password 是远程服务器ip、账号、密码,配置完后可以点击 SFTP host后的TestSFTP connection按钮测试是否可连接。Root path 是远程服务器部署jar包的目录。

配置Mappings:

在这里插入图片描述

其中,deployment path on server spark 路径是相对于配置connection 中的 Root path。

idea Tools->deployment->option,配置如下:

在这里插入图片描述

调用 mvn package 打包,然后上传到远程服务器:

在这里插入图片描述

到远程服务器Root path 下 找到 上传jar包,然后执行如下命令将jar上传到spark服务器,并在开启jvm在8336端口监听:

spark-submit --class com.spark.WordCount --master spark://localhost:7078  --driver-java-options "-Xdebug  -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8336" spark-1.0-SNAPSHOT.jar 

其中,–master spark master 节点地址

address=8336 jvm监听端口

server=y y表示启动的JVM是被调试者。如果为n,则表示启动的JVM是调试器

suspend=y y表示启动的JVM会暂停等待,直到调试器连接上才继续执行,如果为n,则JVM不会暂停等待

如下图,启动监听成功。

[root@localhost target]# spark-submit --class com.spark.WordCount --master spark://localhost:7078  --driver-java-options "-Xdebug  -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8336" spark-1.0-SNAPSHOT.jar 
Listening for transport dt_socket at address: 8336

配置远程调试

如下:
在这里插入图片描述

在右上角debug处选择刚才建立的远程调试项目,点击运行。
可以看到刚才spark-submit启动的监听界面产生了调试日志,如下:

21/07/09 13:58:57 INFO TaskSchedulerImpl: Killing all running tasks in stage 0: Stage finished
21/07/09 13:58:57 INFO DAGScheduler: Job 0 finished: count at WordCount.scala:18, took 3.201509 s
#####################108#####################
21/07/09 13:58:57 INFO SparkContext: Starting job: first at WordCount.scala:19
...
21/07/09 13:58:57 INFO TaskSchedulerImpl: Killing all running tasks in stage 1: Stage finished
21/07/09 13:58:57 INFO DAGScheduler: Job 1 finished: first at WordCount.scala:19, took 0.088650 s
###################### Apache Spark#####################
21/07/09 13:58:57 INFO SparkUI: Stopped Spark web UI at http://192.168.136.53:4040
21/07/09 13:58:57 INFO StandaloneSchedulerBackend: Shutting down all executors

本地开发环境配置

   本地开发环境配置中不需要搭建windows版的spark环境,直接使用项目中引入的spark的相关jar包来运行spark程序,提交到本地spark运行。只需要做如下配置(setMaster设置为local):val conf = new SparkConf().setAppName("WordCount").setMaster("local")

运行结果如下:

在这里插入图片描述

结论

本文讲述的调试方式仅适合单人学习开发的场景,不适合多人开发,因为都要观察远程服务器的调试日志,会搞混。若是在实际公司开发场景中,还是建议在在本地进行开发调试。

参考文章

window+idea搭建远程调试spark环境


http://chatgpt.dhexx.cn/article/A2OgL5fX.shtml

相关文章

Spark开发环境搭建

一、安装Spark 1.1 下载并解压 官方下载地址&#xff1a;http://spark.apache.org/downloads.html &#xff0c;选择 Spark 版本和对应的 Hadoop 版本后再下载&#xff1a; 解压安装包&#xff1a; # tar -zxvf spark-2.2.3-bin-hadoop2.6.tgz1.2 配置环境变量 # vim /e…

IDEA2022 配置spark开发环境

本人强烈建议在 linux环境下 学习 spark&#xff01;&#xff01;&#xff01; Introduction Apache Spark是一个快速且通用的分布式计算引擎&#xff0c;可以在大规模数据集上进行高效的数据处理&#xff0c;包括数据转换、数据清洗、机器学习等。在本文中&#xff0c;我们将…

spark开发教程

spark开发教程 目录 spark开发教程前言一、初始化spark二、获取数据源1.创建数据结构2.连接外部数据textfilejdbchive 3. 数据处理rdd算子transform算子action算子 dataframe操作dataset操作 4. 共享变量5.写入数据 总结 前言 spark开发主要的基于RDD、Datasets、DataFrame、s…

Spark 开发总结

Spark 开发总结 前言spark UISpark API FunctionWindow.partitionBy Spark udfSpark 中禁止使用returnSpark NullPointExceptionSpark Shuffle FetchFailedExceptionspark 数据倾斜 前言 大数据开发过程中把自己积累的关于Spark的使用方法记录下来&#xff0c;便于不断的回顾和…

Spark 开发入门

文章目录 Spark是什么DAG有向无环图 spark环境搭建Spark开发pyspark使用pythonSpark初始化创建RDD数据的读取和保存文本文件Json文件 RDD的转换操作RDD的行动操作集合操作mysql读取 Spark是什么 整个Hadoop生态圈分为分布式文件系统HDFS、计算框架MapReduce以及资源调度框架Ya…

Spark开发——Spark简介及入门

目录 什么是Spark&#xff1f; Spark有哪些特点和优势 1.计算速度 2.易用性 3.通用性 4.兼容性 Spark架构 Spark基本概念 Spark结构设计 使用Scala语言实现Spark本地词频统计 什么是Spark&#xff1f; Spark它是一个用于大规模数据处理的实时计算引擎。 Spark有哪些…

Spark开发指南

目 录 6 Spark开发指南 6.1 概述 6.2 开发环境准备 6.2.1 Java开发环境准备 6.2.2 Scala开发环境准备 6.3 开发指引 6.4 Java代码样例 6.5 Scala代码样例 6.6 对外接口 6.6.1 Java API 6.6.2 Scala API 6.6.3 Python API 6.6.4 Web UI 6.6.5 JDBC 6 Spark开发指南…

PIX飞控电流计设置

在 测量电池电压 一栏输入用电压表测得的电池电压&#xff0c;保存。

pixhawk飞控接口含义

官方文档&#xff1a;https://docs.px4.io/v1.9.0/en/flight_controller/pixhawk.html 1——spektrum DSM receiver2&#xff0c;3——远程通信口&#xff0c;接数传4——串口5——SPI6——电源口7——飞控的安全开关&#xff0c;长按启动解锁8——蜂鸣器9——串口10——GPS11—…

PIX飞控不能解锁问题总结

摘自&#xff1a;https://baijiahao.baidu.com/s?id1640767431717207814&wfrspider&forpc PIX飞控不能解锁问题总结 给力蹦小勇士 发布时间&#xff1a;19-08-0222:55 一、飞控故障或没校准 在地面站里飞行数据菜单查看报错。假如加速度计和地磁没校准&#xff0c;…

富斯i6航模遥控器配apm(pix)飞控mission planner疑难杂症解决策略(上)

提示&#xff1a;仅适用于新手入门参考。 目录 前言 在missionplanner调试遥控器出现信号异常&#xff0c;飞行调试出现操作异常如何处理&#xff0c;在硬件无损的前提下&#xff0c;如何进行简易调试&#xff0c;下文将介绍入门的处理办法。 一、切换飞行模式时突然出现油门…

Mission Planner初学者安装调试教程指南(APM或PIX飞控)3——连接与烧录

Mission Planner初学者安装调试教程指南&#xff08;APM或PIX飞控&#xff09;3——连接与烧录 目录 1.连接方式 2.烧录固件 1.连接方式 通常可以使用micro USB数据线直接连接APM&#xff08;pixhawk&#xff09;&#xff0c;将数据线一头接入电脑usb口&#xff0c;另一头接…

pixhawk飞控板的硬件构成

具体介绍 pixhawk是一款高性能的飞控板&#xff0c;它能用于固定翼&#xff0c;多旋翼&#xff0c;直升机&#xff0c;小车等多种应用。它能被用于研究用&#xff0c;玩耍用&#xff0c;甚至直接用于做产品。这款飞控其实是将PX4FMU和PX4IO做了一个封装&#xff0c;将两部分PC…

Mission Planner初学者安装调试教程指南(APM或PIX飞控)5——规划航点航线

目录 1.卫星地图上规划普通航点 2.曲线航点 3.规划多边形区域 4.环形航线 5. 曲线航线 6.设置网格 7.特殊航线 学习地面站&#xff0c;不可避免要触及英文指令。通过经常使用日常积累&#xff0c;可以熟练掌握各个指令的含义。serve the people heart and soul&#xff0…

OPENMV结合PIX飞控实现四轴定点 循迹 2017电赛

本文章代码已上传Github&#xff1a; https://github.com/Kevincoooool/2017_Follow 有兴趣的可以加个STAR 自从17年国赛之后&#xff0c;自己做了openmv&#xff0c;加了很多群&#xff0c;也了解到很多人都在想着这个题。 第一版 第二版 第三版 我们做国赛的时候实现了全…

飞行控制器Pixhawk简介

作者&#xff1a;华清远见讲师 Pixhawk是一款由PX4开源项目设计并由3DR公司制造生产的高级自动驾驶仪系统。其前身是APM&#xff0c;由于APM的处理器已经接近满负荷&#xff0c;没有办法满足更复杂的运算处理&#xff0c;所以硬件厂商采用了目前最新标准的32位ARM处理器&#x…

pixhawk飞控解锁方法

1. pixhawk飞控解锁方法是&#xff1a;油门(throttl)拉到最低,偏航角&#xff08;yaw&#xff09;拉到最右边。

如何用开源飞控PIXHAWK进行二次开发?

著作权归作者所有。 商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 作者&#xff1a;我是肉包子 链接&#xff1a;http://www.zhihu.com/question/38874663/answer/84239995 来源&#xff1a;知乎 以下所描述的都是针对px4原生固件&#xff0c;此外&#xff0…

APM和PIX飞控日志分析入门贴

我们在飞行中&#xff0c;经常会碰到各种各样的问题&#xff0c;经常有模友很纳闷&#xff0c;为什么我的飞机会这样那样的问题&#xff0c;为什么我的飞机会炸机&#xff0c;各种问题得不到答案是一件非常不爽的问题&#xff0c;在APM和PIX飞控中&#xff0c;都有记录我们整个…

开源飞控APM与PIXHAWK

一 APM 官网地址&#xff1a;http://ardupilot.org/ APM&#xff08;ArduPilotMega&#xff09; 是在2007年由DIY无人机社区&#xff08;DIY Drones&#xff09;推出的飞控产品&#xff0c;是当今最为成熟的开源硬件项目。APM基于Arduino的开源平台&#xff0c;对多处硬件做出了…