Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spark 1.6-未能在hadoop二进制路径中找到winutils二进制文件_Java_Hadoop_Apache Spark - Fatal编程技术网

Java Spark 1.6-未能在hadoop二进制路径中找到winutils二进制文件

Java Spark 1.6-未能在hadoop二进制路径中找到winutils二进制文件,java,hadoop,apache-spark,Java,Hadoop,Apache Spark,我知道有一篇与此类似的帖子(),但是,我已经尝试了建议的每一步,仍然出现相同的错误 我试图在Windows 7上使用Apache Spark 1.6.0版来执行本页的教程,具体使用以下代码: ./bin/run-example streaming.JavaNetworkWordCount localhost 9999 但是,此错误不断出现: 看完这篇文章 我意识到我需要winutils.exe文件,因此我下载了一个hadoop二进制文件2.6.0,并定义了一个名为hadoop_HOME的环

我知道有一篇与此类似的帖子(),但是,我已经尝试了建议的每一步,仍然出现相同的错误

我试图在Windows 7上使用Apache Spark 1.6.0版来执行本页的教程,具体使用以下代码:

./bin/run-example streaming.JavaNetworkWordCount localhost 9999
但是,此错误不断出现:

看完这篇文章

我意识到我需要winutils.exe文件,因此我下载了一个hadoop二进制文件2.6.0,并定义了一个名为hadoop_HOME的环境变量:

 with value C:\Users\GERAL\Desktop\hadoop-2.6.0\bin  
并将其放置在如下路径:%HADOOP\u HOME%


但是,当我尝试代码时,仍然会出现相同的错误。有人知道如何解决这个问题吗

如果使用Hadoop在Windows上运行Spark,则需要确保正确安装了Windows Hadoop。要运行spark,您需要在hadoop主目录bin文件夹中有winutils.exe和winutils.dll

我想请你先试试这个:

1) 您可以从下面链接中的捆绑包下载.dll和.exe文件

2) 将winutils.exe和winutils.dll从该文件夹复制到$HADOOP_HOME/bin

3) 在spark-env.sh或在命令中设置
HADOOP\u HOME
,并将
HADOOP\u HOME/bin
添加到
路径

然后试着跑步

如果您需要hadoop安装帮助的帮助,这里有一个很好的链接,您可以尝试一下


但是,这可以等待。您可以尝试前几个步骤。

从这里下载bin文件,然后
System.setProperty(“hadoop.home.dir”,“Desktop\bin”)

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

C:\Users\GERAL\Desktop\hadoop-2.6.0
而不是

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

我在尝试从Windows笔记本电脑启动spark shell时也遇到了这个问题。我解决了这个问题,它对我有效,希望能有所帮助。这是我犯的一个很小的错误-我将winutils可执行文件保存为“winutils.exe”,而不仅仅是winutils


因此,当解析变量时,它一直解析为winutils.exe.exe,而winutils.exe在Hadoop二进制文件中不存在。我删除了“.exe”并触发了shell,它成功了。我建议你看看它保存的名称

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

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);

    }

安装JDK1.8,从ApacheSpark下载Spark二进制文件,从GitRepo下载Winutils

设置JDK、Spark binary和Winutils的用户变量路径

JAVA_HOME

C:\ProgramFiles\Java\jdk1.8.0\U 73

HADOOP\u HOME

C:\Hadoop

SPARK\u HOME

C:\spark-2.3.1-bin-hadoop2.7

路径

C:\ProgramFiles\Java\jdk1.8.0\U 73\bin;%HADOOP_HOME%\bin;%SPARK\u HOME%\bin

打开命令提示符并运行spark shell


您不应该使用HADOOP\u HOME=C:\Users\GERAL\Desktop\HADOOP-2.6.0并添加%HADOOP\u HOME%\bin;走variable@JD_247没用,谢谢anyway@JD_247你的评论对我很有吸引力在哪里编写
System.setProperty(“hadoop.home.dir”,“Desktop\bin”)@PragyadityaDas在缅因州这就像一个符咒。我只想添加一个小的添加,shell默认在
HADOOP\u HOME/bin
中搜索,因此,如果在path中设置
HADOOP\u HOME/bin
,它将在
HADOOP\u HOME/bin
中搜索
winutils.exe
并抛出一个错误。
System.setProperty("hadoop.home.dir", "C:\\winutil\\");