吐血经验在 windows 上安装 spark 遇到的一些坑 | 避坑指南
Posted Piper蛋窝
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了吐血经验在 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 遇到的一些坑 | 避坑指南的主要内容,如果未能解决你的问题,请参考以下文章