乐趣区

关于spark:在-windows-上安装-spark-遇到的一些坑-避坑指南

在 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』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。

老铁别忘了给个关注、点赞。

退出移动版