Java Spark 1.6-未能在hadoop二进制路径中找到winutils二进制文件
我知道有一篇与此类似的帖子(),但是,我已经尝试了建议的每一步,仍然出现相同的错误 我试图在Windows 7上使用Apache Spark 1.6.0版来执行本页的教程,具体使用以下代码: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的环
./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\\");