“未能找到 winutils 二进制文件”但我的 pyspark 仍然有效
Posted
技术标签:
【中文标题】“未能找到 winutils 二进制文件”但我的 pyspark 仍然有效【英文标题】:"Failed to locate the winutils binary" yet my pyspark still works 【发布时间】:2019-04-20 17:26:54 【问题描述】:在 Windows 中,当我启动我的 pyspark shell 时,我收到了错误:
2019-04-20 08:11:34 ERROR Shell:397 - 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.
但是,在该错误之后,我的 pyspark shell 启动正常,并且我在运行 pyspark 和在其上运行代码时没有问题。但是,我每次都会收到此错误,我不知道如何摆脱它。
我的环境变量设置正确(就像许多人针对这个问题提出的建议一样),并且我在正确的 bin 文件夹中有 winutils.exe。 (我在 Hadoop 的相应 bin 文件夹中也有 winutils.exe 和 hadoop.dll)。我相信如果没有设置这些东西,pyspark shell 甚至都不会工作。
作为参考,我的环境变量设置为:
HADOOP_HOME: C:\hadoop SPARK_HOME:C:\Spark\spark-2.3.3-bin-hadoop2.7 在我放置的路径中:C:\Spark\spark-2.3.3-bin-hadoop2.7 和 C:\hadoop\bin。我为系统变量(除了用户变量)放置了相同的变量。
Hadoop 也可以正常工作并启动(除了显示 50070 UI,而它显示 8080 UI,尽管这可能是一个单独的问题)。
这可能只是一个不会消失的缓存错误吗?有什么建议可以摆脱它吗?谢谢!
【问题讨论】:
【参考方案1】:我解决了这个问题!该错误不再显示。我只是对这些文件进行了以下更改:“conf\spark-env.sh > set HADOOP_HOME=C:\hadoop; in conf\spark-defaults.conf > spark.driver.extraJavaOptions -Djava.library.path=C: /hadoop/bin"
正如该用户在他们的评论中所建议的:
Could not locate executable C:\hadoop\bin\winutils.exe in the hadoop binaries
因此,除了在 /bin 中设置正确的 winutils.exe 之外,您还必须按照我上面写的那样设置环境变量,还必须在我上面指定的文件中添加这些内容。那么在windows上本地运行pyspark应该没有问题或者报错吧!
【讨论】:
以上是关于“未能找到 winutils 二进制文件”但我的 pyspark 仍然有效的主要内容,如果未能解决你的问题,请参考以下文章
OpsWorks 已部署,但我的操作均无效。我的 database.yml 文件是不是搞砸了?