为什么spark shell会出现nullpointerexception故障?

lh80um4z  于 2021-05-29  发布在  Hadoop
关注(0)|答案(10)|浏览(294)

我试着去执行 spark-shell 在Windows10上,但每次运行它时都会出现此错误。
我使用了最新版本和spark-1.5.0-bin-hadoop2.4版本。

15/09/22 18:46:24 WARN Connection: BoneCP specified but not present in     
CLASSPATH (or one of dependencies)
15/09/22 18:46:24 WARN Connection: BoneCP specified but not present in                 CLASSPATH (or one of dependencies)
15/09/22 18:46:27 WARN ObjectStore: Version information not found in    
metastore. hive.metastore.schema.verification is not enabled so recording the schema version 1.2.0
15/09/22 18:46:27 WARN ObjectStore: Failed to get database default, returning NoSuchObjectException
15/09/22 18:46:27 WARN : Your hostname, DESKTOP-8JS2RD5 resolves to a loopback/non-reachable address: fe80:0:0:0:0:5efe:c0a8:103%net1, but we couldn't find any external IP address!
java.lang.RuntimeException: java.lang.NullPointerException
    at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:522)
    at org.apache.spark.sql.hive.client.ClientWrapper.<init>    (ClientWrapper.scala:171)
    at org.apache.spark.sql.hive.HiveContext.executionHive$lzycompute(HiveContext.scala    :163)
    at org.apache.spark.sql.hive.HiveContext.executionHive(HiveContext.scala:161)
    at org.apache.spark.sql.hive.HiveContext.<init>(HiveContext.scala:168)
    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.repl.SparkILoop.createSQLContext(SparkILoop.scala:1028)
    at $iwC$$iwC.<init>(<console>:9)
    at $iwC.<init>(<console>:18)
    at <init>(<console>:20)
    at .<init>(<console>:24)
    at .<clinit>(<console>)
    at .<init>(<console>:7)
    at .<clinit>(<console>)
    at $print(<console>)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.spark.repl.SparkIMain$ReadEvalPrint.call(SparkIMain.scala:1065)
    at org.apache.spark.repl.SparkIMain$Request.loadAndRun(SparkIMain.scala:1340)
    at org.apache.spark.repl.SparkIMain.loadAndRunReq$1(SparkIMain.scala:840)
    at org.apache.spark.repl.SparkIMain.interpret(SparkIMain.scala:871)
    at org.apache.spark.repl.SparkIMain.interpret(SparkIMain.scala:819)
    at org.apache.spark.repl.SparkILoop.reallyInterpret$1(SparkILoop.scala:857)
    at org.apache.spark.repl.SparkILoop.interpretStartingWith(SparkILoop.scala:902)
    at org.apache.spark.repl.SparkILoop.command(SparkILoop.scala:814)
    at org.apache.spark.repl.SparkILoopInit$$anonfun$initializeSpark$1.apply(SparkILoopInit.scala:132)
    at org.apache.spark.repl.SparkILoopInit$$anonfun$initializeSpark$1.apply(SparkILoopInit.scala:124)
    at org.apache.spark.repl.SparkIMain.beQuietDuring(SparkIMain.scala:324)
    at org.apache.spark.repl.SparkILoopInit$class.initializeSpark(SparkILoopInit.scala:124)
    at org.apache.spark.repl.SparkILoop.initializeSpark(SparkILoop.scala:64)
    at org.apache.spark.repl.SparkILoop$$anonfun$org$apache$spark$repl$SparkILoop$$process$1$$anonfun$apply$mcZ$sp$5.apply$mcV$sp(SparkILoop.scala:974)
    at org.apache.spark.repl.SparkILoopInit$class.runThunks(SparkILoopInit.scala:159)
    at org.apache.spark.repl.SparkILoop.runThunks(SparkILoop.scala:64)
    at org.apache.spark.repl.SparkILoopInit$class.postInitialization(SparkILoopInit.sca      la:108)
    at org.apache.spark.repl.SparkILoop.postInitialization(SparkILoop.scala:64)
    at org.apache.spark.repl.SparkILoop$$anonfun$org$apache$spark$repl$SparkILoop$$proc      ess$1.apply$mcZ$sp(SparkILoop.scala:991)
    at org.apache.spark.repl.SparkILoop$$anonfun$org$apache$spark$repl$SparkILoop$$proc      ess$1.apply(SparkILoop.scala:945)
    at org.apache.spark.repl.SparkILoop$$anonfun$org$apache$spark$repl$SparkILoop$$proc      ess$1.apply(SparkILoop.scala:945)
    at scala.tools.nsc.util.ScalaClassLoader$.savingContextLoader(ScalaClassLoader.scal      a:135)
    at org.apache.spark.repl.SparkILoop.org$apache$spark$repl$SparkILoop$$process(SparkILoop.scala:945)
    at org.apache.spark.repl.SparkILoop.process(SparkILoop.scala:1059)
    at org.apache.spark.repl.Main$.main(Main.scala:31)
    at org.apache.spark.repl.Main.main(Main.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:672)
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:180)
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:205)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:120)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
  Caused by: java.lang.NullPointerException
    at java.lang.ProcessBuilder.start(Unknown Source)
    at org.apache.hadoop.util.Shell.runCommand(Shell.java:445)
    at org.apache.hadoop.util.Shell.run(Shell.java:418)
    at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:650)
    at org.apache.hadoop.util.Shell.execCommand(Shell.java:739)
    at org.apache.hadoop.util.Shell.execCommand(Shell.java:722)
    at org.apache.hadoop.fs.FileUtil.execCommand(FileUtil.java:1097)
    at org.apache.hadoop.fs.RawLocalFileSystem$DeprecatedRawLocalFileStatus.loadPermissionInfo(RawLocalFileSystem.java:559)
    at org.apache.hadoop.fs.RawLocalFileSystem$DeprecatedRawLocalFileStatus.getPermission(RawLocalFileSystem.java:534)
   org.apache.hadoop.hive.ql.session.SessionState.createRootHDFSDir(SessionState.java:599)
    at org.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:554)

org.apache.hadoop.hive.ql.session.sessionstate.start(sessionstate。java:508) ... 56个以上

<console>:10: error: not found: value sqlContext
               import sqlContext.implicits._
                ^
  <console>:10: error: not found: value sqlContext
               import sqlContext.sql
                ^
hc8w905p

hc8w905p1#

我遇到了一个类似的问题,通过将winutil放在bin文件夹中解决了这个问题。hadoop\u home应该设置为c:\winutils,winutil应该放在c:\winutils\bin中。
windows 10 64位winutils在中提供https://github.com/steveloughran/winutils/tree/master/hadoop-2.6.0/bin
还要确保命令行具有管理访问权限。
参考https://wiki.apache.org/hadoop/windowsproblems

scyqe7ek

scyqe7ek2#

或者下面的链接更容易理解,
https://wiki.apache.org/hadoop/windowsproblems
基本上下载winutils.exe并将其复制到spark\bin文件夹。重新运行Spark壳
如果尚未将/tmp/hive设置为可写状态,请执行此操作。

ibps3vxo

ibps3vxo3#

您需要授予/tmp/hive目录的权限才能解决此异常。
希望您已经有winutils.exe和设置hadoop\u home环境变量。然后打开命令提示符,以管理员身份运行以下命令:
如果winutils.exe位于d:\winutils\bin位置,并且\tmp\hive也位于d驱动器中:

D:\winutils\bin\winutils.exe chmod 777 D:\tmp\hive

有关详细信息,请参阅以下链接:
spark开发过程中经常出现的问题
如何在windows7上以独立模式运行apache spark

cnwbcb6i

cnwbcb6i4#

我的问题是winutils/bin文件夹中有其他的.exe/jar。所以我清除了所有其他文件,只剩下winutils.exe了。正在使用spark 2.1.1

fd3cxomn

fd3cxomn5#

我在hadoop2.6中使用了spark1.5.2,遇到了类似的问题。按以下步骤解决:
下载 winutils.exe 从存储库到某个本地文件夹,例如。 C:\hadoop\bin .
HADOOP_HOMEC:\hadoop .
创建 c:\tmp\hive 目录(使用windows资源管理器或任何其他工具)。
以管理员权限打开命令提示符。
C:\hadoop\bin\winutils.exe chmod 777 /tmp/hive 有了这些,我仍然得到一些警告,但没有错误,可以运行spark应用程序只是罚款。

vjrehmav

vjrehmav6#

对于python-在python中创建一个sparksession(此配置部分仅适用于windows)

spark = SparkSession.builder.config("spark.sql.warehouse.dir", "C:/temp").appName("SparkSQL").getOrCreate()

复制winutils.exe并保存在c:\winutils\bin中并执行以下命令

C:\Windows\system32>C:\winutils\bin\winutils.exe chmod 777 C:/temp

在管理模式下运行命令提示符(以管理员身份运行)

ej83mcc0

ej83mcc07#

在安装了正确的java版本(在我的例子中是java8)并设置了环境变量之后,问题得到了解决。确保运行winutils.exe创建一个临时目录,如下所示。

c:\winutils\bin\winutils.exe chmod 777 \tmp\hive

以上不应返回任何错误。使用 java -version 在调用sparkshell之前验证您正在使用的java版本。

zbq4xfa0

zbq4xfa08#

在windows中,需要克隆“winutils”

git clone https://github.com/steveloughran/winutils.git

set var HADOOP_HOME to DIR_CLONED\hadoop-{version}

记住选择hadoop的版本。

whlutmcx

whlutmcx9#

您可以通过将mysqlconnector jar放在spark-1.6.0/libs文件夹中并重新启动来解决此问题。它可以正常工作。
重要的是在这里,而不是运行Spark壳你应该做的

spark-shell --driver-class-path /home/username/spark-1.6.0-libs-mysqlconnector.jar

希望它能起作用。

fumotvh3

fumotvh310#

我猜你会遇到https://issues.apache.org/jira/browse/spark-10528. 我在Windows7上看到了同样的问题。一开始我和你一样得到nullpointerexception。当我将winutils放入bin目录并将hadoop\u home设置为指向spark目录时,我得到了jira问题中描述的错误。

相关问题