【问题标题】:Spark Installation火花安装
【发布时间】:2016-06-28 21:24:02
【问题描述】:

我是新手,想在 Windows 7 Enterprise 系统上安装 spark。我已经完成了所有步骤,比如环境变量,也安装了 scala。我已经采用了最新的 spark-1.6.2-bin-hadoop2.6 版本的 spark。安装后,当我运行 bin\spark-shell 时。我觉得它运行良好,但我看到一些警告是这样的。我也安装了java。

我为这里的长异常错误道歉。对此的任何帮助都会非常有帮助。

C:\windows\system32>java -version java版本“1.8.0_92” Java(TM) SE 运行时环境 (build 1.8.0_92-b14) Java HotSpot(TM) 64 位服务器 VM(内部版本 25.92-b14,混合模式)

16/06/28 17:18:53 WARN ObjectStore: Version information not found in metastore. hive.metastore.schema.verification is not enabled so recording the schema version 1.2.0
16/06/28 17:18:53 WARN ObjectStore: Failed to get database default, returning NoSuchObjectException
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:204)
        at org.apache.spark.sql.hive.client.IsolatedClientLoader.createClient(IsolatedClientLoader.scala:238)
        at org.apache.spark.sql.hive.HiveContext.executionHive$lzycompute(HiveContext.scala:218)
        at org.apache.spark.sql.hive.HiveContext.executionHive(HiveContext.scala:208)
        at org.apache.spark.sql.hive.HiveContext.functionRegistry$lzycompute(HiveContext.scala:462)
        at org.apache.spark.sql.hive.HiveContext.functionRegistry(HiveContext.scala:461)
        at org.apache.spark.sql.UDFRegistration.<init>(UDFRegistration.scala:40)
        at org.apache.spark.sql.SQLContext.<init>(SQLContext.scala:330)
        at org.apache.spark.sql.hive.HiveContext.<init>(HiveContext.scala:90)
        at org.apache.spark.sql.hive.HiveContext.<init>(HiveContext.scala:101)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at org.apache.spark.repl.SparkILoop.createSQLContext(SparkILoop.scala:1028)
        at $iwC$$iwC.<init>(<console>:15)
        at $iwC.<init>(<console>:24)
        at <init>(<console>:26)
        at .<init>(<console>:30)
        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(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.spark.repl.SparkIMain$ReadEvalPrint.call(SparkIMain.scala:1065)
        at org.apache.spark.repl.SparkIMain$Request.loadAndRun(SparkIMain.scala:1346)
        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.scala:108)
        at org.apache.spark.repl.SparkILoop.postInitialization(SparkILoop.scala:64)
        at org.apache.spark.repl.SparkILoop$$anonfun$org$apache$spark$repl$SparkILoop$$process$1.apply$mcZ$sp(SparkILoop.scala:991)
        at org.apache.spark.repl.SparkILoop$$anonfun$org$apache$spark$repl$SparkILoop$$process$1.apply(SparkILoop.scala:945)
        at org.apache.spark.repl.SparkILoop$$anonfun$org$apache$spark$repl$SparkILoop$$process$1.apply(SparkILoop.scala:945)
        at scala.tools.nsc.util.ScalaClassLoader$.savingContextLoader(ScalaClassLoader.scala: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(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:731)
        at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:181)
        at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:206)
        at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121)
        at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Caused by: java.lang.NullPointerException
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1012)
        at org.apache.hadoop.util.Shell.runCommand(Shell.java:482)
        at org.apache.hadoop.util.Shell.run(Shell.java:455)
        at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:715)
        at org.apache.hadoop.util.Shell.execCommand(Shell.java:808)
        at org.apache.hadoop.util.Shell.execCommand(Shell.java:791)
        at org.apache.hadoop.fs.FileUtil.execCommand(FileUtil.java:1097)
        at org.apache.hadoop.fs.RawLocalFileSystem$DeprecatedRawLocalFileStatus.loadPermissionInfo(RawLocalFileSystem.java:582)
        at org.apache.hadoop.fs.RawLocalFileSystem$DeprecatedRawLocalFileStatus.getPermission(RawLocalFileSystem.java:557)
        at org.apache.hadoop.hive.ql.session.SessionState.createRootHDFSDir(SessionState.java:599)
        at org.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:554)
        at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:508)
        ... 62 more

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

【问题讨论】:

  • 在安装 1.6.1 之前请注意; Spark 2.0 几乎每天都会发布。

标签: scala apache-spark


【解决方案1】:

Spark 重用 hive 的元存储。所以 Spark 需要配置 Hive 站点。如果找不到 hive 站点配置,则会报告该错误。

复制配置hive-site.xml并重启spark-shell。

在 CDH 中可以使用以下命令完成。

cp /etc/hive/conf/hive-site.xml /etc/spark/conf/

【讨论】:

    【解决方案2】:

    在上面下载 winutils.exe 并将其复制到 %HADOOP_HOME%/Bin 并设置权限:

      winutils.exe chmod 777 "C:\tmp\hive
    

    如果您要使用 Jupiter Notebook(pyspark 的好工具),这将有所帮助。

    【讨论】:

      【解决方案3】:

      我在 windows 上运行 spark 时经历了很多痛苦。最后它工作正常,我不需要以上任何东西 - winutils、全局变量或 C:\tmp\hive。我什至没有 Windows 上的管理员访问权限。

      Windows 上的 Spark 通常会抛出异常,因为它找不到 hive 和 hadoop,但取决于您的任务,您需要导入相应的库。启动后立即导入sqlContext

          val sqlContext = new org.apache.spark.sql.SQLContext(sc)
          import sqlContext.implicits._
          import sqlContext.sql
      

      顺便说一句,我在没有 winutils 的 Jupiter 中使用 pyspark,只是在本地告诉 python spark 在哪里。

      【讨论】:

        【解决方案4】:

        我相信您正在尝试使用 SQLContext 访问配置单元。它爆炸了,因为SQLContext 没有成功初始化。这些是常见的元存储问题。

        你需要,

        1) 在SPARK_HOME/conf/ 路径创建hive-site.xml 文件,并使其能够使用MySql 作为其元存储而不是Derby。

        2) 不要使用SQLContext 来访问hive 表,而是使用HiveContext 对象。

        不用说,这是 Spark 1.x.x 的旧帖子。在 Spark 2.x.x 中发生了很多 API 改进,并且 SparkSql 和 Hive 操作只有一个入口点,称为 SparkSession。应该是这样的,

        val ss = SparkSession
              .builder()
              .appName("test")
              .master("local[2]")
              .enableHiveSupport()
              .getOrCreate()
        

        如果这有帮助,请告诉我。干杯。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-07-30
          • 2016-08-21
          • 2016-10-11
          • 1970-01-01
          • 2011-01-22
          • 2017-11-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多