【问题标题】:spark-shell: The system cannot find the path specifiedspark-shell:系统找不到指定的路径
【发布时间】:2018-01-08 08:40:24
【问题描述】:

安装 anaconda 包后,我无法在 Windows 7 下启动 Spark Shell。每当我输入 spark-shell 时,控制台都会回答 The system cannot find the path specified. 当然 Spark Shell 不会启动。

我有以下echo %PATH%

C:\Program Files\Microsoft MPI\Bin\;C:\Program Files (x86)\Common Files\Intel\Shared Files\cpp\bin\Intel64;C:\Program Files (x86)\Intel\iCLS客户端\;C:\ProgramFiles\Intel\iCLS 客户端\;C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;C :\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R)管理引擎组件\IPT;C:\Program Files (x86)\Intel\Intel(R) 管理引擎组件\IPT;C:\Program Files\Lenovo\Fingerprint Manager Pro\;C:\Program Files (x86)\WinSCP \;C:\Program Files (x86)\Lenovo\Access Connections\;C:\Program Files\MiKTeX 2.9\miktex\bin\x64\;C:\Program Files\PuTTY\;C:\Program Files (x86) \Intel\UCRT\;C:\Program Files\Intel\UCRT\;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files\ Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\dotnet\;C:\Program File s\Anaconda3;C:\Program Files\Anaconda3\Scripts;C:\Program Files\Anaconda3\Library\bin;C:\Program Files (x86)\GtkSharp\2.12\bin;C:\Program Files\Git\cmd ;C:\Program Files\TortoiseGit\bin;C:\Program Files\TortoiseSVN\bin;C:\Program Files (x86)\sbt\bin;C:\Program Files (x86)\scala\bin; C:\Program Files (x86)\Java\jre1.8.0_144\bin; C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files (x86)\Graphviz2.38\bin\;C:\Program Files (x86 )\sbt\bin; C:\Program Files (x86)\scala\bin;D:\Spark\bin;D:\Hadoop\bin

还有以下echo %SPARK_HOME%

D:\火花

还有以下echo %JAVA_HOME%

C:\Program Files (x86)\Java\jre1.8.0_144

这是我的java -version

java 版本“1.8.0_144”

Java(TM) SE 运行时环境(内部版本 1.8.0_144-b01)

Java HotSpot(TM) 客户端 VM(内部版本 25.144-b01,混合模式,共享)

我已经尝试重新安装 Java,但没有任何成功。有一个类似的问题here,但我没有在我的设置中看到任何错误的环境变量。所以我真的不知道如何解决这个问题......有什么想法吗?

经过一些测试,我发现当我将cd 转换为$SPARK_HOME$\bin 时,我实际上可以执行spark-shell。它退出并显示错误消息:

\Java\jre1.8.0_144\bin\java 这个时候出乎意料。

执行Spark\bin\spark-submit2.cmd的最后一行"%~dp0spark-class2.cmd" %CLASS% %*时出现此错误。

更新 1:

%JAVA_HOME% 从“C:\Program Files...”更改为“C:\PROGRA~1...”确实在某些方面解决了这个问题:spark-shell 现在似乎开始了。不过还是有很多Access denied的错误:

java.lang.IllegalArgumentException: Error while instantiating 'org.apache.spark.sql.hive.HiveSessionStateBuilder':
at org.apache.spark.sql.SparkSession$.org$apache$spark$sql$SparkSession$$insta
ntiateSessionState(SparkSession.scala:1053)
at org.apache.spark.sql.SparkSession$$anonfun$sessionState$2.apply(SparkSessio
n.scala:130)
at org.apache.spark.sql.SparkSession$$anonfun$sessionState$2.apply(SparkSessio
n.scala:130)
at scala.Option.getOrElse(Option.scala:121)
at org.apache.spark.sql.SparkSession.sessionState$lzycompute(SparkSession.scal
a:129)
at org.apache.spark.sql.SparkSession.sessionState(SparkSession.scala:126)
at org.apache.spark.sql.SparkSession$Builder$$anonfun$getOrCreate$5.apply(Spar
kSession.scala:938)
at org.apache.spark.sql.SparkSession$Builder$$anonfun$getOrCreate$5.apply(Spar
kSession.scala:938)
at scala.collection.mutable.HashMap$$anonfun$foreach$1.apply(HashMap.scala:99)
at scala.collection.mutable.HashMap$$anonfun$foreach$1.apply(HashMap.scala:99)
at scala.collection.mutable.HashTable$class.foreachEntry(HashTable.scala:230)
at scala.collection.mutable.HashMap.foreachEntry(HashMap.scala:40)
at scala.collection.mutable.HashMap.foreach(HashMap.scala:99)
at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:93
8)
at org.apache.spark.repl.Main$.createSparkSession(Main.scala:97)
... 47 elided
Caused by: org.apache.spark.sql.AnalysisException: java.lang.RuntimeException: j
ava.lang.RuntimeException: java.io.IOException: Access is denied;
at org.apache.spark.sql.hive.HiveExternalCatalog.withClient(HiveExternalCatalo
g.scala:106)
at org.apache.spark.sql.hive.HiveExternalCatalog.databaseExists(HiveExternalCa
talog.scala:193)
at org.apache.spark.sql.internal.SharedState.externalCatalog$lzycompute(Shared
State.scala:105)
at org.apache.spark.sql.internal.SharedState.externalCatalog(SharedState.scala
:93)
at org.apache.spark.sql.hive.HiveSessionStateBuilder.externalCatalog(HiveSessi
onStateBuilder.scala:39)
at org.apache.spark.sql.hive.HiveSessionStateBuilder.catalog$lzycompute(HiveSe
ssionStateBuilder.scala:54)
at org.apache.spark.sql.hive.HiveSessionStateBuilder.catalog(HiveSessionStateB
uilder.scala:52)
at org.apache.spark.sql.hive.HiveSessionStateBuilder.catalog(HiveSessionStateB
uilder.scala:35)
at org.apache.spark.sql.internal.BaseSessionStateBuilder.build(BaseSessionStat
eBuilder.scala:289)
at org.apache.spark.sql.SparkSession$.org$apache$spark$sql$SparkSession$$insta
ntiateSessionState(SparkSession.scala:1050)
... 61 more
Caused by: java.lang.RuntimeException: java.lang.RuntimeException: java.io.IOExc
eption: Access is denied
at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:522)

at org.apache.spark.sql.hive.client.HiveClientImpl.<init>(HiveClientImpl.scala
:191)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.apache.spark.sql.hive.client.IsolatedClientLoader.createClient(Isolated
ClientLoader.scala:264)
at org.apache.spark.sql.hive.HiveUtils$.newClientForMetadata(HiveUtils.scala:3
62)
at org.apache.spark.sql.hive.HiveUtils$.newClientForMetadata(HiveUtils.scala:2
66)
at org.apache.spark.sql.hive.HiveExternalCatalog.client$lzycompute(HiveExterna
lCatalog.scala:66)
at org.apache.spark.sql.hive.HiveExternalCatalog.client(HiveExternalCatalog.sc
ala:65)
at org.apache.spark.sql.hive.HiveExternalCatalog$$anonfun$databaseExists$1.app
ly$mcZ$sp(HiveExternalCatalog.scala:194)
at org.apache.spark.sql.hive.HiveExternalCatalog$$anonfun$databaseExists$1.app
ly(HiveExternalCatalog.scala:194)
at org.apache.spark.sql.hive.HiveExternalCatalog$$anonfun$databaseExists$1.app
ly(HiveExternalCatalog.scala:194)
at org.apache.spark.sql.hive.HiveExternalCatalog.withClient(HiveExternalCatalo
g.scala:97)
... 70 more
Caused by: java.lang.RuntimeException: java.io.IOException: Access is denied
at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:515)

... 84 more
Caused by: java.io.IOException: Access is denied
at java.io.WinNTFileSystem.createFileExclusively(Native Method)
at java.io.File.createTempFile(Unknown Source)
at org.apache.hadoop.hive.ql.session.SessionState.createTempFile(SessionState.
java:818)
at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:513)

... 84 more
<console>:14: error: not found: value spark
import spark.implicits._
       ^

<console>:14: error: not found: value spark
import spark.sql
       ^

更新 2:

以管理员身份运行 spark-shell 有效!但是,这可能非常不安全,我不认为这是一个真正的解决方案。

【问题讨论】:

  • JAVA_HOMEProgramFiles 之间的空格可能是这里的罪魁祸首。
  • 解决这个问题的最佳方法是什么?重新安装Java?顺便说一句,我的java目录中也有一个空间,当它前段时间工作时......
  • 我不确定这是否会导致错误,但您可以尝试将 java 重新安装到没有空格的路径。类似`C:\Java`
  • 你的想法很好,但是,这还不足以解决这个问题。我更新了问题。顺便说一句,here 是一个很好的提示如何删除空间。
  • 我认为现在你应该考虑添加一个 hive-site.xmlwinutils 库,如果你还没有的话。

标签: java windows apache-spark environment-variables


【解决方案1】:

确保您已正确设置您的 JAVA_HOME 和 SBT_HOME,为了安全起见,我还将它们添加到 Path 变量中。为了轻松做到这一点,我可以推荐“快速环境编辑器”,这是一种用于编辑系统变量的简单而好用的工具。这种方法对我有用,因为我遇到了和你一样的问题。一个例子是:

JAVA_HOME 设置为 C:\Program Files\Java\jdk1.8.0_151

SBT_HOME 设置为 C:\Program Files (x86)\sbt\

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-23
    • 2018-12-12
    • 2016-04-23
    相关资源
    最近更新 更多