Windows上的spark-shell错误 - 如果不使用hadoop可以忽略吗?

时间:2017-05-05 15:17:14

标签: apache-spark

启动spark-shell时出现以下错误。我将使用Spark来处理SQL Server中的数据。我可以忽略这些错误吗?

  

java.io.IOException:找不到Hadoop二进制文件中的可执行文件null \ bin \ winutils.exe。

     

java.lang.IllegalArgumentException:实例化'org.apache.spark.sql.hive.HiveSessionState'时出错

     

引起:java.lang.reflect.InvocationTargetException:java.lang.IllegalArgumentException:实例化'org.apache.spark.sql.hive.HiveExternalCatalog'时出错:

     

引起:java.lang.IllegalArgumentException:实例化'org.apache.spark.sql.hive.HiveExternalCatalog'时出错

     

引起:java.lang.IllegalArgumentException:实例化'org.apache.spark.sql.hive.HiveExternalCatalog'时出错

     

引起:java.lang.reflect.InvocationTargetException:java.lang.reflect.InvocationTargetException:java.lang.RuntimeException:java.lang.RuntimeException:运行命令以获取文件权限时出错:java.io.IOException :( null)命令字符串中的条目:null ls -FC:\ tmp \ hive

     

引起:java.lang.reflect.InvocationTargetException:java.lang.RuntimeException:java.lang.RuntimeException:运行命令以获取文件权限时出错:java.io.IOException:(null)命令字符串中的条目:null ls -FC:\ tmp \ hive

     

引起:java.lang.RuntimeException:java.lang.RuntimeException:运行命令以获取文件权限时出错:java.io.IOException:(null)命令字符串中的条目:null ls -FC:\ tmp \ hive

1 个答案:

答案 0 :(得分:10)

tl; dr 你不愿意。

嗯,它可能可能,但是如果你刚刚开始前往Spark的土地,那么努力就不会有回报。

Windows对我来说从来就不是一个对开发人员友好的操作系统,每当我教人们Spark并且他们使用Windows时我只是认为我们必须经过winutils.exe设置但很多次还有如何在命令行上工作。

请按以下方式安装winutils.exe

  1. 以管理员身份运行cmd
  2. https://github.com/steveloughran/winutils存储库下载winutils.exe二进制文件(使用hadoop-2.7.1 for Spark 2
  3. 将winutils.exe二进制文件保存到您选择的目录中,例如: c:\hadoop\bin
  4. 设置HADOOP_HOME以反映具有winutils.exe(不含bin)的目录,例如: set HADOOP_HOME=c:\hadoop
  5. 设置PATH环境变量以包含%HADOOP_HOME%\bin
  6. 创建c:\tmp\hive目录
  7. 执行winutils.exe chmod -R 777 \tmp\hive
  8. 打开spark-shell并运行spark.range(1).show以查看单行数据集。