在 windows 上安装 spark 遇到的一些坑 | 避坑指南

最近有个活:给了我一个阿里云桌面(windows 10系统),让我在上面用 scala + spark 写一些东西。

总是报错不断,基本的逻辑都运行不了。经历了很久的 debug ,我总结出来:凡是 IDEA 没有在我的脚本里明确指出哪行有问题的错误,都是因为版本不兼容。别犹豫,赶快检查版本。

检查涉及到:

  • 基本的 java 环境: 1.8.0_201
  • 语言 scala 版本: 2.12.13
  • hadoop 版本: 2.6.4
  • spark 版本: 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.7hadoop

换了 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 遇到的一些坑 | 避坑指南相关推荐

  1. windows安装gnu_在Windows上安装GNU Emacs

    windows安装gnu GNU Emacs是为各种程序员设计的流行文本编辑器. 因为它是在Unix上开发的,并且在Linux上广泛使用(并且随macOS一起提供),所以人们有时没有意识到它也可用于M ...

  2. 在Windows上编译Spark源码

    原文转自http://my.oschina.net/u/1452001/blog/344067?fromerr=1iS9kYnS 在本机(Windows 8)上安装spark玩一玩,Spark的Qui ...

  3. 在Windows上build Spark

    2019独角兽企业重金招聘Python工程师标准>>> 在本机(Windows 8)上安装spark玩一玩,Spark的Quick Start上没有指明具体步骤,自己Build好了之 ...

  4. 在 Windows 上安装 TensorFlow(转载)

    在 Windows 上安装 TensorFlow windows下配置安装Anaconda+tensorflow Spyder--科学的Python开发环境 Windows7 安装TensorFlow ...

  5. 安装oracle后在cmd,在WINDOWS上安装ORACLE RAC的注意事项

    在WINDOWS上安装ORACLE RAC的注意事项 1.检查防火墙和杀毒软件 如果不关掉防火墙,在安装CRS时,在"Oracle Clusterware Configuration Ass ...

  6. Windows上安装AD域控制器注意事项及常见问题处理办法

    以Windows Server 2008 R2 SP1 x64为例,在ECS Windows上安装域控制器时,要注意的事项和常见问题说明如下: 1. 要点和注意事项: 所有域节点的如下服务必须启动,推 ...

  7. Git学习系列之Windows上安装Git之后的一些配置(图文详解)

    不多说,直接上干货! 前面博客 Git学习系列之Windows上安装Git详细步骤(图文详解) 第一次使用Git时,需要对Git进行一些配置,以方便使用Git. 不过,这种配置工作只需要进行一次便可, ...

  8. python 调用 tensorflow.dll_解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题...

    最近打算开始研究一下机器学习,今天在windows上装tensorflow花了点功夫,其实前面的步骤不难,只要依次装好python3.5,numpy,tensorflow就行了,有一点要注意的是目前只 ...

  9. windows上安装Anaconda和python的教程详解

    一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因 ...

最新文章

  1. linux 使用buildroot制作文件系统
  2. 使用s3sec批量化自动扫描S3存储桶泄露数据
  3. 卡方线性趋势检验_SPSS:趋势卡方检验
  4. flume-ng命令
  5. opencv 处理黑夜_基于 opencv图像去噪
  6. QT生成可执行的EXE程序
  7. zb_system login.php,zblog后台登录地址怎么修改?
  8. CSS权威指南阅读笔记
  9. 2018华为网络技术大赛课程-服务器操作系统基础原理自测题答案
  10. 新手怎样利用博客推广
  11. 英语简单句——英语句子的基本结构、句子的成分(谓语、主语)、简单句的考点分析
  12. unity怪物攻击玩家减血_Unity-塔防游戏之怪物波次简单算法
  13. Java实现 LeetCode 274 H指数
  14. 操作系统-复习-考题预测及解析-期中考试
  15. Java中如何将一个数组分割成多个等长度的数组
  16. 无极符和鸿蒙符哪个好,无极仙途内丹属性哪个好? 单属性与双属性内丹对比详解...
  17. dhcp服务器未能分发地址,H3C案例查看:ADCampus网络dhcp服务器未配置策略导致地址分配错误问题...
  18. 转:人的认识如何自我超越
  19. python 爬取17k网址的个人书架内容
  20. 一个简单答题系统的设计与实现(四)

热门文章

  1. 当画面出现问题时,如何调试!
  2. 关于iOS6应用中第三方类库不支持armv7s的问题解决
  3. C# 让你解决方案乱七八糟的DLL放入指定文件夹
  4. 解决远程桌面关闭后teamviewer不能连接的问题
  5. Linux记录-重启后磁盘丢失问题解决方案
  6. 连接不上sql server服务器的解决方案
  7. 用python实现websocket请求遇到的问题及解决方法。
  8. 使用jQuery在AJAX请求中添加标头
  9. 如何将堆栈跟踪转换为字符串?
  10. win11打开应用被管理员阻止怎么办 window11管理员已阻止你运行此应用的解决方法