【吐血经验】在 windows 上安装 spark 遇到的一些坑 | 避坑指南
在 windows 上安装 spark 遇到的一些坑 | 避坑指南

最近有个活:给了我一个阿里云桌面(windows 10系统),让我在上面用 scala + spark 写一些东西。
总是报错不断,基本的逻辑都运行不了。经历了很久的 debug ,我总结出来:凡是 IDEA 没有在我的脚本里明确指出哪行有问题的错误,都是因为版本不兼容。别犹豫,赶快检查版本。
检查涉及到:
- 基本的
java环境: 1.8.0_201 - 语言
scala版本: 2.12.13 hadoop版本: 2.6.4spark版本: 2.4.8
第一关:scala小版本不兼容
尽管我们在 spark 官网看到:Spark 2.4.8 配置 Scala 2.12.x 版本就行,但是呵呵,运行时报错如下。
... java.lang.NoSuchMethodError: scala.Predef$.refArrayOps ...
我本身刚开始用 scala ,还以为是自己写的程序哪里出了问题。好家伙这顿找哇,最后感谢『运行spark出现java.lang.NoSuchMethodError: scala.Predef$.refArrayOps』,让我意识到了或许更换 scala 版本可以一试。
上面那篇文章建议在 mvnrepository.com/artifact/org.apache.spark/spark-core 上面看版本兼容,我觉得不靠谱。我这里推荐两个方法,都是我自己摸索的:
方法一: 打开我们的命令行(cmd或者powershell都行),输入 spark-shell ,看我们本地安装的 spark 用了啥版本的 scala 。如下图。

方法二: 去 spark 安装路径下面看看里面那 scala 依赖都啥版本。如下图。

于是把 scala 2.12.13 卸载了,去 scala 官网下载了 scala 2.11.12 版本的。
第二关:Hadoop 版本
好家伙,之前的错误不报了,现在是新错误。
错误一:
... java.lang.Exception: java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows. ...
错误二:
... 【MapReduce】报错:java.lang.UnsatisfiedLinkError : org.apache.hadoop.io.nativeio ...
参考了两篇文章,没啥直接帮助,但是我意识到了可能是 Hadoop 版本不对:
- java.lang.Exception: java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.
- 【MapReduce】报错:java.lang.UnsatisfiedLinkError : org.apache.hadoop.io.nativeio
毕竟咱的 spark 安装包就叫 spark-2.4.8-bin-hadoop2.7 ,怎么说都得安装个 2.7 的 hadoop 。
换了 hadoop 2.7.3 。没啥问题了。
第三关:hadoop.dll
本以为大功告成了。直到我使用了一个方法:
result.coalesce(1).write.mode(SaveMode.Overwrite).csv(outputPath)
我想通过 spark 把数据写到硬盘上,好家伙,报错了。
... java.io.IOException: (null) entry in command string: null chmod 0644 ...
我又以为是自己对 API 理解不深刻造成的问题,于是乱改了半天。
直到我想起:凡是 IDEA 没有在我的脚本里明确指出哪行有问题的错误,都是因为版本不兼容。 我现在虽然版本没问题了,但是可能还有其他地方没配好。至少,很大概率不是自己写的代码有问题。
感谢老哥『Hadoop在window上运行出现:java.io.IOException: (null) entry in command string: null chmod 0644』,我安装老哥的指引在 github.com/4ttty/winutils/blob/master/hadoop-2.7.1/bin 下载了动态链接库 hadoop.dll ,放在了 C:/Windows/System32 下面。
我的版本本来是 2.7.3 ,但下载的版本是 2.7.1 (没有 2.7.3 ),心里祈祷:小版本兼容吧,小版本兼容吧。终于是好用了。
总结
不知道以后还会遇到什么版本问题。
归根结底,还是自己对于 Spark 极其依赖、生态不熟悉,如果是 Python 报错,我一下就能看出来是自己代码的问题,还是环境有问题。所以还是得系统了解一下 Spark 相关内容。学习系统性知识将让我的工作事半功倍。
还有,能用 linux 尽量用 linux 吧,把 docker 配好,谁要用直接拉镜像,剩多少事啊。但是话说回来,要是直接帮我配好了环境,我就学不到这么多了。
我是小拍,微信 PiperLHJ , 想要建一个 spark/scala/hadoop/大数据技术栈 群 ,想入伙的小伙伴加我微信 PiperLHJ 。

老铁别忘了给个关注、点赞。
【吐血经验】在 windows 上安装 spark 遇到的一些坑 | 避坑指南的更多相关文章
- Windows上安装运行Spark
1.下载Scala: https://www.scala-lang.org/download/ ①注意:必须下载官方要求的JDK版本,并设置JAVA_HOME,否则后面将出现很多麻烦! ②Scala当 ...
- windows上安装apache python mod_python
综述: windows上安装apache python mod_python的例子.教程甚至图解都不少:但作为新手还是会出错,而且一时无法快速排解. 在此笔者将根据自己的实践经验,给出几个需要注意 ...
- 在 Windows 上安装 TensorFlow(转载)
在 Windows 上安装 TensorFlow windows下配置安装Anaconda+tensorflow Spyder——科学的Python开发环境 Windows7 安装TensorFlow ...
- # 【ARM-Linux开发】在Win7的电脑上直接运行安装Ubuntu14.04发生的问题 标签(空格分隔): 【Linux开发】 --- > 一段时间以来,一直是在Windows上安装虚拟机
[ARM-Linux开发]在Win7的电脑上直接运行安装Ubuntu14.04发生的问题 标签(空格分隔): [Linux开发] 一段时间以来,一直是在Windows上安装虚拟机,然后安装Ubuntu ...
- 在Windows上安装Elasticsearch 5.0
在windows上安装Elasticsearch Elasticsearch可以使用.zip软件包安装在Windows上. elasticsearch-service.bat命令,它将设置Elasti ...
- 在 Windows 上安装Rabbit MQ 指南
rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.他遵循Mozilla Public License开源协议.采用 Erlang 实现的工业级的消息队列(MQ)服务器. Ra ...
- 在Windows上安装虚拟机详细图文教程
用虚拟机来安装最新的软件,安装最新的系统等等比较保险,可以避免安装不顺利影响自己原来的系统和应用,想尝鲜又担心自己完全更换系统不适应的朋友可以尝试. 虚拟机下载:https://yunpan.cn/c ...
- 在windows上安装ASP.NET 5(译文)
本文将介绍如何在windows上安装ASP.NET5,包括单独安装和通过Visual Studio 2015 安装. 本文包括: 通过Visual Studio安装ASP.NET 单独安装ASP.NE ...
- python环境搭建-在Windows上安装python3.5.2
在Windows上安装Python3.5.2 首先,根据你的Windows版本(64位还是32位)从Python的官方网站下载Python 3.5.2对应的64位安装程序或32位安装程序(网速慢的同学 ...
- (转)如何在Windows上安装多个MySQL
原文:http://www.blogjava.net/hongjunli/archive/2009/03/01/257216.html 如何在Windows上安装多个MySQL 本文以免安装版的mys ...
随机推荐
- 相机系统 GLFW OPENGL
目录 0. 前言 1. 世界坐标系 2. GLFW 窗口坐标系 与 坐标系变换 3. 相机是什么东西 4. 相机的平面位移(上下左右) 5. 相机的聚焦点环绕(球形环绕 ArcBall Orbit) ...
- 详解 Hough 变换(基本原理与直线检测)
Hough 变换原理与应用 前言: 详细介绍了 Hough 变换的基本思想.基本原理和应用等.其中大多都是自己的理解,难免有偏差,仅供参考. 文章目录 Hough 变换原理与应用 1. 基本概述 1. ...
- Centos 安装 supervisord服务
安装supervisord 执行如下命令安装supervisord yum install epel-release -y yum install supervisor -y 设置开机启动superv ...
- DashText-快速开始
快速开始 DashText,是向量检索服务DashVector推荐使用的稀疏向量编码器(Sparse Vector Encoder),DashText可通过BM25算法将原始文本转换为稀疏向量(Spa ...
- 部署包含Oracle数据源的项目
这段时间在处理公司EAS的数据报表,需要通过ETL进行数据的抽取,当ETL都完成并在本地跑成功后,总以为万事大吉了,没想到部署到作业后,却一直无法成功,百度搜索了好多方法,跟着上面去操作还是一直报错, ...
- 在使用asm包进行动态类加载的时候的打包问题
如图所示,开发时使用的jdk包下面的asm包,在进行打包时提示asm包不存在,打包方式使用如下: 目前提供两种解决方案: 1:修改打包方式,将jdk的包也打进去: <plugin> < ...
- common-dbutils的使用
1. 介绍 commons-dbutils是Apache组织提供的一个开源 JDBC工具类库,能让我们更简单的使用JDBC.它是一个非常小的类包,花几分钟的时间就能掌握它的使用. 2. ...
- 面试:10亿数据如何最快速插入MySQL?
转载:https://mp.weixin.qq.com/s/kL1srP3FZjaTSXLULsUS5g 最快的速度把10亿条数据导入到数据库,首先需要和面试官明确一下,10亿条数据什么形式存在哪里, ...
- Linux C/C++编程之静态库
[图书推荐]<Linux C与C++一线开发实践(第2版)>_linux c与c++一线开发实践pdf-CSDN博客 <Linux C与C++一线开发实践(第2版)(Linux技术丛 ...
- spring ai 函数调用
1.概要 我们使用AI大模型开发程序时,比如我需要查一下平台中有多少个客户.这个时候大模型肯定时不知道的,如果大模型不知道,他可能会回答不知道或者胡乱回答,这个时候就需要借助函数时调用来解决这些问题. ...