<p>与上面@Hapreet Varma描述的程序相同</p>
<p>您缺少winutils.exe hadoop二进制文件。根据x64位/x32位系统,下载winutils.exe文件并将hadoop home设置为指向该文件。</p>
<p>第一条路:</p>
<p>1.下载文件</p>
<p>2.在系统ex“C:”中创建hadoop文件夹</p>
<p>3.在hadoop目录中创建bin文件夹,例如:C:\ hadoop\bin</p>
<p>4.将winutils.exe粘贴到bin ex中:C:\ hadoop\bin\winuitls.exe</p>
<p>5.系统属性中的用户变量->;高级系统设置</p>
<p>创建新变量名:HADOOP\u HOME Path:C:\ HADOOP\</p>
<p>第二条路:</p>
<p>可以使用以下命令直接在Java程序中设置hadoop home:</p>
<p>System.setProperty(“hadoop.home.dir”,“C:\ hadoop”)</p>
<p><strong>如果在Eclipse Oxygen中工作,则必须在系统属性中设置变量后重新启动Eclipse,否则它将不起作用。</strong>
如果路径设置错误,Eclipse将在日志的开头显示winutils的当前设置位置。像这样的东西</p>
<p><strong>2018-05-05 18:27:47错误外壳:397-无法在hadoop二进制路径中找到winutils二进制文件</strong></p>
<p><strong>java.io.IOException:在Hadoop二进制文件中找不到可执行文件null\bin\winutils.exe。</strong></p>
<p>完整的错误日志在这里</p>
<pre><code>2018-05-05 18:27:47 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.
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.security.SecurityUtil.getAuthenticationMethod(SecurityUtil.java:611)
at org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:273)
at org.apache.hadoop.security.UserGroupInformation.ensureInitialized(UserGroupInformation.java:261)
at org.apache.hadoop.security.UserGroupInformation.loginUserFromSubject(UserGroupInformation.java:791)
at org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.java:761)
at org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:634)
at org.apache.spark.util.Utils$$anonfun$getCurrentUserName$1.apply(Utils.scala:2464)
at org.apache.spark.util.Utils$$anonfun$getCurrentUserName$1.apply(Utils.scala:2464)
at scala.Option.getOrElse(Option.scala:121)
at org.apache.spark.util.Utils$.getCurrentUserName(Utils.scala:2464)
at org.apache.spark.SparkContext.<init>(SparkContext.scala:292)
at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2486)
at org.apache.spark.sql.SparkSession$Builder$$anonfun$7.apply(SparkSession.scala:930)
at org.apache.spark.sql.SparkSession$Builder$$anonfun$7.apply(SparkSession.scala:921)
at scala.Option.getOrElse(Option.scala:121)
at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:921)
at com.dataflair.spark.Wordcount$.main(Wordcount.scala:13)
at com.dataflair.spark.Wordcount.main(Wordcount.scala)
</code></pre>