如何设置winutils.exe的确切路径以使用Java访问HDFS?
在我的系统变量中,如何设置winutils.exe的确切路径以使用Java访问HDFS?,java,windows,hadoop,hdfs,hadoop2,Java,Windows,Hadoop,Hdfs,Hadoop2,在我的系统变量中,HADOOP\u HOME设置为C:\HADOOP-2.7.2\bin 我尝试使用以下代码访问HDFS: FileSystem hdfs = FileSystem.get(new Configuration()); Path homeDir = hdfs.getHomeDirectory(); 运行时错误: 17/03/13 10:49:39 ERROR util.Shell: Failed to locate the winutils binary in the hadoo
HADOOP\u HOME
设置为C:\HADOOP-2.7.2\bin
我尝试使用以下代码访问HDFS:
FileSystem hdfs = FileSystem.get(new Configuration());
Path homeDir = hdfs.getHomeDirectory();
运行时错误:
17/03/13 10:49:39 ERROR util.Shell: Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable C:\hadoop-2.7.2\bin\bin\winutils.exe in the Hadoop binaries.
at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:379)
at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:394)
at org.apache.hadoop.util.Shell.<clinit>(Shell.java:387)
at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:80)
at org.apache.hadoop.fs.FileSystem$Cache$Key.<init>(FileSystem.java:2823)
at org.apache.hadoop.fs.FileSystem$Cache$Key.<init>(FileSystem.java:2818)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2684)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:373)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:172)
17/03/13 10:49:39错误util.Shell:未能在hadoop二进制路径中找到winutils二进制文件
java.io.IOException:在hadoop二进制文件中找不到可执行文件C:\hadoop-2.7.2\bin\bin\winutils.exe。
位于org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:379)
位于org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:394)
位于org.apache.hadoop.util.Shell(Shell.java:387)
位于org.apache.hadoop.util.StringUtils。(StringUtils.java:80)
位于org.apache.hadoop.fs.FileSystem$Cache$Key.(FileSystem.java:2823)
位于org.apache.hadoop.fs.FileSystem$Cache$Key.(FileSystem.java:2818)
位于org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2684)
位于org.apache.hadoop.fs.FileSystem.get(FileSystem.java:373)
位于org.apache.hadoop.fs.FileSystem.get(FileSystem.java:172)
如何将代码访问的路径
C:\hadoop-2.7.2\bin\bin\winutils.exe
更改为C:\hadoop-2.7.2\bin\winutils.exe
,因为前者不是有效的目录?在屏幕截图中更新路径变量
,并将winutils.exe
放置在hadoop-2.x/bin//code>
在屏幕截图中更新路径变量
,并将winutils.exe
放入hadoop-2.x/bin/
尝试将HADOOP\u HOME
设置为“C:\HADOOP-2.7.2\”?仍然是相同的错误…尝试将HADOOP\u HOME
设置为“C:\HADOOP-2.7.2\”?仍然是相同的错误…添加了System.setProperty(“HADOOP.HOME.dir”,“C:\\HADOOP-2.7.2\”代码>到我的代码。它解决了错误,但显示了以下警告<代码>警告util.NativeCodeLoader:无法为您的平台加载本机hadoop库。。。在适用的地方使用内置java类
只是警告,您可以运行代码而不会出现任何问题添加System.setProperty(“hadoop.home.dir”,“C:\\hadoop-2.7.2\\”代码>到我的代码。它解决了错误,但显示了以下警告<代码>警告util.NativeCodeLoader:无法为您的平台加载本机hadoop库。。。在适用的地方使用内置java类
只是警告,您可以毫无问题地运行代码