spark 1.6在hadoop二进制路径中找不到winutils二进制文件

l3zydbqr  于 2021-05-29  发布在  Hadoop
关注(0)|答案(6)|浏览(474)

我知道有一个非常类似的帖子(在hadoop二进制路径中找不到winutils二进制文件),但是,我尝试了建议的每一步,仍然出现同样的错误。
我正在尝试使用Windows7上的ApacheSparkVersion1.6.0来执行本页的教程http://spark.apache.org/docs/latest/streaming-programming-guide.html,具体使用以下代码:

./bin/run-example streaming.JavaNetworkWordCount localhost 9999

但是,此错误不断出现:

阅读本文后,在hadoop二进制路径中找不到winutils二进制文件
我意识到我需要winutils.exe文件,所以我下载了一个hadoop二进制2.6.0,定义了一个名为hadoop\u home的环境变量:

with value C:\Users\GERAL\Desktop\hadoop-2.6.0\bin

把它放在如下路径上:%hadoop\u home%
但是,当我尝试代码时,仍然会出现相同的错误。有人知道怎么解决这个问题吗?

8fq7wneg

8fq7wneg1#

从hadoopbin下载bin文件 System.setProperty("hadoop.home.dir", "Desktop\bin");

i2byvkas

i2byvkas2#

我在尝试从我的windows笔记本电脑上启动sparkshell时也遇到了这个问题。我解决了这个问题,它为我工作,希望能有所帮助。这是我犯的一个很小的错误-我将winutils可执行文件保存为“winutils.exe”,而不仅仅是winutils。
因此,当变量被解析时,它被解析为winutils.exe.exe,而这在hadoop二进制文件中是不存在的。我删除了“.exe”并触发了shell,它成功了。我建议你看看它被保存的名字。

qlfbtfca

qlfbtfca3#

如果您使用hadoop在windows上运行spark,那么您需要确保正确安装了windows hadoop。要运行spark,需要在hadoop主目录bin文件夹中有winutils.exe和winutils.dll。
我想请你先试试这个:
1) 您可以从下面链接中的包下载.dll和.exe文件。
https://codeload.github.com/sardetushar/hadooponwindows/zip/master
2) 将winutils.exe和winutils.dll从该文件夹复制到$hadoop\u home/bin。
3) 设置 HADOOP_HOME 在spark-env.sh中或在命令处,添加 HADOOP_HOME/binPATH .
然后试着跑步。
如果你需要hadoop安装帮助的帮助,有一个很好的链接,你可以试试。
http://toodey.com/2015/08/10/hadoop-installation-on-windows-without-cygwin-in-10-mints/
但是,那可以等等。你可以试试前面的几个步骤。

5n0oy7gb

5n0oy7gb4#

安装jdk1.8,从apachespark下载spark二进制文件,从gitrepo下载winutils
为jdk、spark binary和winutils设置用户变量路径 JAVA_HOME c:\程序文件\java\jdk1.8.0\U 73 HADOOP_HOME c:\hadoop程序 SPARK_HOME c:\spark-2.3.1-bin-hadoop2.7版本 PATH c:\program files\java\jdk1.8.0\U 73\bin;%hadoop\u主页%\bin;%spark\u home%\bin;
打开命令提示符并运行spark shell
Spark壳

pkbketx9

pkbketx95#

您可以尝试将hadoop\u home环境变量设置为:

C:\Users\GERAL\Desktop\hadoop-2.6.0

而不是

C:\Users\GERAL\Desktop\hadoop-2.6.0\bin
xurqigkl

xurqigkl6#

以下错误是由于运行spark应用程序时类路径中缺少winutils二进制文件造成的。winutils是hadoop生态系统的一部分,不包含在spark中。即使抛出异常,应用程序的实际功能也可以正确运行。但最好是把它放在适当的位置,以避免不必要的问题。为了避免错误,请下载 winutils.exe 并将其添加到类路径中。

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.Function;

public class SparkTestApp{

    public static void main(String[] args) {

            System.setProperty("hadoop.home.dir", "ANY_DIRECTORY");

    // Example
    // winutils.exe is copied to C:\winutil\bin\
    // System.setProperty("hadoop.home.dir", "C:\\winutil\\");
            String logFile = "C:\\sample_log.log";
            SparkConf conf = new SparkConf().setAppName("Simple Application").setMaster("local");
            JavaSparkContext sc = new JavaSparkContext(conf);
            JavaRDD logData = sc.textFile(logFile).cache();

            long numAs = logData.filter(new Function<String, Boolean>() {
                public Boolean call(String s) {
                        return s.contains("a");
                }
            }).count();

            System.out.println("Lines with a: " + numAs);

    }

}
如果 winutils.exe 已复制到 C:\winutil\bin\ 然后设置属性如下

System.setProperty("hadoop.home.dir", "C:\\winutil\\");

相关问题