IDEA2022 配置spark开发环境
本人强烈建议在 linux环境下 学习 spark!!!
Introduction
Apache Spark是一个快速且通用的分布式计算引擎,可以在大规模数据集上进行高效的数据处理,包括数据转换、数据清洗、机器学习等。在本文中,我们将讨论如何在Windows上配置Spark开发环境,以及如何进行开发和测试等。
安装 Java 和 Spark
- 为了在Windows上使用Spark开发环境,你需要先安装
Java和Spark,并配置环境变量。你可以从Oracle官网下载最新版本的Java Development Kit(JDK),然后安装它。在安装完成后,你需要将Java的安装目录添加到系统环境变量中,以便Spark可以找到Java。接下来,你可以从Apache Spark官网下载适用于Windows的二进制文件,并解压到本地目录。


使用 Pyspark 或 Spark shell
- 在下载
Spark二进制文件后,你可以使用Pyspark或Spark shell在本地或集群上进行开发。Pyspark是一个Python API,可以使开发者用Python编写Spark应用程序。Spark shell是一个交互式环境,可以允许你使用Scala、Java或Python来调试和测试Spark代码。你可以在命令行中输入“pyspark”或“spark-shell”命令来启动相应的环境。
安装 Winutils 工具
- Winutils是一个用于在
Windows上运行Hadoop的工具,它提供了一些必要的组件和环境变量,以便Spark可以在Windows上运行。你需要从Apache官网下载Winutils二进制文件,并解压到本地目录。接下来,你需要将Winutils的安装目录添加到系统环境变量中,以便Spark可以找到它。 切记:下载与自己hadoop对应的版本,并将原本hadoop/bin替换掉!
Conclusion
- 在开发和部署
Spark应用程序时,确保你了解Spark的最佳实践和安全性措施,以避免潜在的安全漏洞和性能问题。你可以使用一些第三方的库来扩展你的Spark开发环境,例如Pyrolite和SparkR。此外,你还可以考虑使用一些数据可视化工具来帮助你更好地了解和展示你的数据,例如Tableau和PowerBI等。最后,要时刻注意更新你的环境和依赖库,以保持最新的功能和性能优化。
使用集成开发环境(IDE)
- 除了使用
Pyspark或Spark shell,你还可以考虑使用一些集成开发环境(IDE)来提高开发效率,例如PyCharm或IntelliJ IDEA等。这些IDE提供了更强大的代码编辑、自动补全和调试功能,可以帮助你更快地开发和测试Spark应用程序。此外,一些IDE还提供了一些有用的插件,可以帮助你更好地管理你的项目和依赖库。

安装下列插件:



在集群上运行 Spark 应用程序
- 在使用集群时,确保你有足够的资源来支持你的开发和测试,例如足够的内存和处理器。你可以使用一些集群管理工具,例如
Apache Hadoop、Apache Mesos或者Apache YARN等来管理和分配资源。在部署Spark应用程序时,你需要将你的应用程序打包成一个jar文件,并将其提交到集群中运行。你可以使用一些工具,例如Apache Maven或SBT等来打包和管理你的应用程序。 - 如果你已经在Windows上配置了Spark开发环境,可以考虑使用sbt来打包和管理你的应用程序,而不是使用
maven打包和管理。这可以帮助你更好地管理你的依赖库和构建过程,并提高你的开发效率。另外,你还需要时刻注意更新你的环境和依赖库,以保持最新的功能和性能优化。
附上:SBT的使用教程
创建mvn项目:

扩展你的 Spark 开发环境
- 你可以使用一些第三方的库来扩展你的Spark开发环境,例如
Pyrolite和SparkR。Pyrolite是一个Python库,可以让你在Python中使用Java类和对象,从而方便你与Java代码进行交互。SparkR是一个R语言的API,可以让你用R语言编写Spark应用程序。此外,你还可以使用一些数据可视化工具来帮助你更好地了解和展示你的数据,例如Tableau和PowerBI等。


更新你的环境和依赖库
- 最后,在开发Spark应用程序时,你需要时刻注意更新你的环境和依赖库,以保持最新的功能和性能优化。你可以使用一些工具,例如Apache Maven或SBT等来管理你的依赖库,并定期更新它们。此外,你还需要定期更新你的Spark版本和相关组件,以获得最新的功能和修复潜在的漏洞。
Bugs 修复
scalac: Error: Error compiling the sbt component 'compiler-interface-2.11.8-61.0'
sbt.internal.inc.CompileFailed: Error compiling the sbt component 'compiler-interface-2.11.8-61.0'at sbt.internal.inc.AnalyzingCompiler$.handleCompilationError$1(AnalyzingCompiler.scala:436)at sbt.internal.inc.AnalyzingCompiler$.$anonfun$compileSources$5(AnalyzingCompiler.scala:453)at sbt.internal.inc.AnalyzingCompiler$.$anonfun$compileSources$5$adapted(AnalyzingCompiler.scala:448)at sbt.io.IO$.withTemporaryDirectory(IO.scala:490)at sbt.io.IO$.withTemporaryDirectory(IO.scala:500)at sbt.internal.inc.AnalyzingCompiler$.$anonfun$compileSources$2(AnalyzingCompiler.scala:448)at sbt.internal.inc.AnalyzingCompiler$.$anonfun$compileSources$2$adapted(AnalyzingCompiler.scala:440)at sbt.io.IO$.withTemporaryDirectory(IO.scala:490)at sbt.io.IO$.withTemporaryDirectory(IO.scala:500)at sbt.internal.inc.AnalyzingCompiler$.compileSources(AnalyzingCompiler.scala:440)at org.jetbrains.jps.incremental.scala.local.CompilerFactoryImpl$.org$jetbrains$jps$incremental$scala$local$CompilerFactoryImpl$$getOrCompileInterfaceJar(CompilerFactoryImpl.scala:162)at org.jetbrains.jps.incremental.scala.local.CompilerFactoryImpl.$anonfun$getScalac$1(CompilerFactoryImpl.scala:58)at scala.Option.map(Option.scala:242)at org.jetbrains.jps.incremental.scala.local.CompilerFactoryImpl.getScalac(CompilerFactoryImpl.scala:51)at org.jetbrains.jps.incremental.scala.local.CompilerFactoryImpl.createCompiler(CompilerFactoryImpl.scala:20)at org.jetbrains.jps.incremental.scala.local.CachingFactory.$anonfun$createCompiler$3(CachingFactory.scala:21)at org.jetbrains.jps.incremental.scala.local.Cache.$anonfun$getOrUpdate$2(Cache.scala:17)at scala.Option.getOrElse(Option.scala:201)at org.jetbrains.jps.incremental.scala.local.Cache.getOrUpdate(Cache.scala:16)at org.jetbrains.jps.incremental.scala.local.CachingFactory.createCompiler(CachingFactory.scala:21)at org.jetbrains.jps.incremental.scala.local.LocalServer.doCompile(LocalServer.scala:40)at org.jetbrains.jps.incremental.scala.local.LocalServer.compile(LocalServer.scala:27)at org.jetbrains.jps.incremental.scala.remote.Main$.compileLogic(Main.scala:206)at org.jetbrains.jps.incremental.scala.remote.Main$.$anonfun$handleCommand$1(Main.scala:193)at org.jetbrains.jps.incremental.scala.remote.Main$.decorated$1(Main.scala:183)at org.jetbrains.jps.incremental.scala.remote.Main$.handleCommand(Main.scala:190)at org.jetbrains.jps.incremental.scala.remote.Main$.serverLogic(Main.scala:166)at org.jetbrains.jps.incremental.scala.remote.Main$.nailMain(Main.scala:106)at org.jetbrains.jps.incremental.scala.remote.Main.nailMain(Main.scala)at jdk.internal.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.base/java.lang.reflect.Method.invoke(Method.java:568)at com.facebook.nailgun.NGSession.runImpl(NGSession.java:312)at com.facebook.nailgun.NGSession.run(NGSession.java:198)
解决办法:

检查此处配置!
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
将SPARK_HOME/conf 目录下的 log4j.properties.template 重命名为 log4j.properties
23/03/02 18:29:33 INFO SparkContext: Created broadcast 0 from textFile at FrameDemo.scala:13
23/03/02 18:29:34 ERROR Shell: Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:278)at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:300)at org.apache.hadoop.util.Shell.<clinit>(Shell.java:293)at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:76)at org.apache.hadoop.mapred.FileInputFormat.setInputPaths(FileInputFormat.java:362)at <br>org.apache.spark.SparkContext$$anonfun$hadoopFile$1$$anonfun$33.apply(SparkContext.scala:1015)at org.apache.spark.SparkContext$$anonfun$hadoopFile$1$$anonfun$33.apply(SparkContext.scala:1015)at <br>org.apache.spark.rdd.HadoopRDD$$anonfun$getJobConf$6.apply(HadoopRDD.scala:176)at <br>org.apache.spark.rdd.HadoopRDD$$anonfun$getJobConf$6.apply(HadoopRDD.scala:176)<br>at scala.Option.map(Option.scala:145)<br>at org.apache.spark.rdd.HadoopRDD.getJobConf(HadoopRDD.scala:176)<br>at org.apache.spark.rdd.HadoopRDD.getPartitions(HadoopRDD.scala:195)<br>at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:239)<br>at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:237)<br>at scala.Option.getOrElse(Option.scala:120)<br>at org.apache.spark.rdd.RDD.partitions(RDD.scala:237)<br>at org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD.scala:35)<br>at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:239)<br>at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:237)<br>at scala.Option.getOrElse(Option.scala:120)<br>at org.apache.spark.rdd.RDD.partitions(RDD.scala:237)<br>at org.apache.spark.SparkContext.runJob(SparkContext.scala:1929)<br>at org.apache.spark.rdd.RDD.count(RDD.scala:1143)<br>at com.org.SparkDF.FrameDemo$.main(FrameDemo.scala:14)<br>at com.org.SparkDF.FrameDemo.main(FrameDemo.scala)<br>
以编程方式设置 HADOOP_HOME 环境变量:
System.setProperty(“hadoop.home.dir”, “full path to the folder with winutils”);
总结
- 在本文中,我们讨论了如何在
Windows上配置Spark开发环境,并介绍了如何使用Pyspark或Spark shell进行开发和测试。此外,我们还讨论了如何使用集成开发环境(IDE)和扩展你的Spark开发环境。最后,我们提醒你时刻注意更新你的环境和依赖库,以保持最新的功能和性能优化。如果你正在学习Spark开发,希望这篇文章能够帮助你更好地开始你的Spark开发之旅。
相关文章:
IDEA2022 配置spark开发环境
本人强烈建议在 linux环境下 学习 spark!!! Introduction Apache Spark是一个快速且通用的分布式计算引擎,可以在大规模数据集上进行高效的数据处理,包括数据转换、数据清洗、机器学习等。在本文中,我们将…...
趣味答题竞赛小程序开发功能的详细介绍
随着人们对知识学习的要求越来越高,答题已经成为了一项重要的学习和考核方式。而为了让答题变得更加有趣和富有挑战性,我们推出了趣味答题竞赛小程序。下面,我们将详细介绍这个小程序的开发功能。 1.个人淘汰赛 在个人淘汰赛中,…...
【独家】华为OD机试提供C语言题解 - 获取最大软件版本号
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明获取…...
k8s编程operator实战之云编码平台——⑤项目完成、部署
文章目录1、效果展示2、保存用户状态和访问用户服务实现方案2.1 如何保存用户的状态2.1.1 解决保留安装的插件问题2.2 如何访问到用户在工作空间中启动的http服务2.2.1 code-server如何帮我们实现了用户程序的代理3、Operator功能实现3.1 使用KubeBuilder创建项目3.1.1 完善kin…...
C语言杂记(指针篇)
指针篇 指针就是地址,地址就是指针 指针变量就是存放地址的变量 *号只有定义的时候表示定义指针变量,其他表示从地址里面取内容 通过指针的方法使main函数中的data1和data2发生数据交换。 #include <stdio.h> void chang_data(int *data1,int *da…...
ES window 系统环境下连接问题
环境问题:(我采用的版本是 elasticsearch-7.9.3)注意 开始修正之前的配置:前提:elasticsearch.yml增加或者修正一下配置:xpack.security.enabled: truexpack.license.self_generated.type: basicxpack.secu…...
hexo部署github搭建个人博客 完整详细带图版(更新中)
文章目录0. 前置内容1. hexo创建个人博客2. GitHub创建仓库3. hexo部署到GitHub4. 常用命令newcleangenerateserverdeploy5. 添加插件5.1 主题5.2 博客基本信息5.3 创建新的菜单5.4 添加搜索功能5.5 添加阅读时间字数提示5.6 打赏功能5.7 切换主题5.8 添加不蒜子统计5.9 添加百…...
SpringBoot集成DruidDataSource实现监控 SQL 性能
一、快速入门 1.1 基本概念 我们都使用过连接池,比如C3P0、DBCP、hikari、Druid,虽然 HikariCP 的速度稍快,但 Druid 能够提供强大的监控和扩展功能。Druid DataSource 是阿里巴巴开发的号称为监控而生的数据库连接池,它不仅可以…...
maven镜像源及代理配置
在公司使用网络一般需要设置代理, 我在idea中创建springboot工程时,发现依赖下载不了,原以为只要浏览器设置代理,其他的网络访问都会走代理,经过查资料设置了以下几个地方后工程创建正常,在此记录给大家参考…...
【Java面试篇】Spring中@Transactional注解事务失效的常见场景
文章目录Transactional注解的失效场景☁️前言🍀前置知识🍁场景一:Transactional应用在非 public 修饰的方法上🍁场景二: propagation 属性设置错误🍁场景三:rollbackFor属性设置错误dz…...
【C】分配内存的函数
#include <stdlib.h>//分配所需的内存空间,并返回一个指向它的指针。 void *malloc(size_t size);//分配所需的内存空间,并返回一个指向它的指针。并且calloc负责把这块内存空间用字节0填//充,而malloc并不负责把分配的内存空间清零 vo…...
IDEA 断点总是进入class文件没有进入源文件解决
前言 idea 断点总是进入class文件没有进入源文件解决 问题 在源文件里打了断点,断点模式启动时却进入了class文件里的断点,而没有进入到java源文件里的断点。 比如:我在 A.java 里打了断点,调试时却进入到了 jar 包里的 A.clas…...
【flink】 flink入门教程demo 初识flink
文章目录通俗解释什么是flink及其应用场景flink处理流程及核心APIflink代码快速入门flink重要概念什么是flink? 刚接触这个词的同学 可能会觉得比较难懂,网上搜教程 也是一套一套的官话, 如果大家熟悉stream流,那或许会比较好理解…...
LeetCode 1487. 保证文件名唯一
【LetMeFly】1487.保证文件名唯一 力扣题目链接:https://leetcode.cn/problems/making-file-names-unique/ 给你一个长度为 n 的字符串数组 names 。你将会在文件系统中创建 n 个文件夹:在第 i 分钟,新建名为 names[i] 的文件夹。 由于两个…...
详细剖析|袋鼠云数栈前端框架Antd 3.x 升级 4.x 的踩坑之路
袋鼠云数栈从2016年发布第⼀个版本开始,就始终坚持着以技术为核⼼、安全为底线、提效为⽬标、中台为战略的思想,坚定不移地⾛国产化信创路线,不断推进产品功能迭代、技术创新、服务细化和性能升级。 在数栈过去的产品迭代中受限于当前组件的…...
【C++PrimerPlus】第三章 处理数据
文章目录前言内容目录3.1 简单变量3.1.2 变量名3.1.2 整形3.1.3 整形short,int,long,long long3.1.4 无符号类型3.1.5 选择整形类型3.1.6 整形字面值3.1.7 C如何确定常量的类型3.1.8 char类型:字符和小整数3.1.9 bool类型3.2 const修饰符3.3浮点数3.3.1 书写浮点数3…...
【基础算法】单链表的OJ练习(1) # 反转链表 # 合并两个有序链表 #
文章目录前言反转链表合并两个有序链表写在最后前言 上一章讲解了单链表 -> 传送门 <- ,后面几章就对单链表进行一些简单的题目练习,目的是为了更好的理解单链表的实现以及加深对某些函数接口的熟练度。 本章带来了两个题目。一是反转链表&#x…...
离散数学笔记(1)命题逻辑
文章目录1.命题符号化及联结词基本概念本节题型2.命题公式及分类基本概念本节题型1.命题符号化及联结词 基本概念 命题的定义:能够判断真假的陈述句称为命题。 备注:感叹句、疑问句、祈使句和类似于xy>5之类真值不唯一的句子都不是命题。 真值的真假…...
IDEA Android 网格布局(GridLayout)示例(计算器界面布局)
网格布局(GridLayout) 示例程序效果(实现类似vivo手机自带计算器UI) 真机和模拟器运行效果: 简述: GridLayout(网格布局)和TableLayout(表格布局)有类似的地方,通俗来讲可以理解为…...
【蓝桥杯嵌入式】拓展板之数码管显示
文章目录硬件电路连接方式函数实现文章福利硬件电路 通过上述原理图,可知拓展板上的数码管是一个共阴数码管,也就是说某段数码管接上高电平时,就会点亮。 上述原理图还给出一个提示,即:三个数码管分别与三个74HC59…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...
Linux操作系统共享Windows操作系统的文件
目录 一、共享文件 二、挂载 一、共享文件 点击虚拟机选项-设置 点击选项,设置文件夹共享为总是启用,点击添加,可添加需要共享的文件夹 查询是否共享成功 ls /mnt/hgfs 如果显示Download(这是我共享的文件夹)&…...
