为什么spark-shell因“错误:未找到:值火花”而失败?

时间:2017-06-06 09:24:01

标签: apache-spark apache-spark-sql

我使用Spark 2.1.0。

当我运行spark-shell时,遇到此错误:

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

可能是什么原因?如何解决?

6 个答案:

答案 0 :(得分:8)

我遇到了同样的问题,经过调查我发现 {{>> spark version winutils.exe 之间存在兼容性问题{3}}

经过实验,我建议您使用 hadoop-2.7.1 winutils.exe spark-2.2.0-bin-hadoop2.7 版本和 hadoop带有 spark-1.6.0-bin-hadoop2.6 版本的-2.6.0 winutils.exe 并设置如下环境变量

SCALA_HOME  : C:\Program Files (x86)\scala2.11.7;
JAVA_HOME   : C:\Program Files\Java\jdk1.8.0_51
HADOOP_HOME : C:\Hadoop\winutils-master\hadoop-2.7.1
SPARK_HOME  : C:\Hadoop\spark-2.2.0-bin-hadoop2.7
PATH    : %JAVA_HOME%\bin;%SCALA_HOME%\bin;%HADOOP_HOME%\bin;%SPARK_HOME%\bin;

创建 C:\ tmp \ hive diroctory并使用以下命令授予访问权限

C:\Hadoop\winutils-master\hadoop-2.7.1\bin>winutils.exe chmod -R 777 C:\tmp\hive

从计算机中删除本地基于Derby的Metastore metastore_db 目录(如果存在)。

C:\Users\<User_Name>\metastore_db

使用以下命令启动spark shell

C:>spark-shell

hadoop-2.x.x

答案 1 :(得分:2)

错误的原因是由于某些早期问题(由于您在Windows上并且尚未安装可能)而无法创建实例winutils.exe二进制或其他会话保留本地基于Derby的Metastore。)

建议您向上滚动并查看找到根本原因的整个日志屏幕。

答案 2 :(得分:1)

如果你在Cloudera,这张github票的解决方案对我有用(https://github.com/cloudera/clusterdock/issues/30):

  

root用户(在启动spark-shell时运行的用户)在HDFS中没有用户目录。如果你创建一个(sudo -u hdfs hdfs dfs -mkdir / user / root后跟sudo -u hdfs dfs -chown root:root / user / root),这应该是固定的。

即。为运行spark-shell的用户创建一个HDFS用户主目录。

答案 3 :(得分:1)

给“chmod 777”基本上允许此文件夹激活访问权限

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    #'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',

以下是完整的命令: -

C:\tmp\hive

http://mytechnologythought.blogspot.com/2017/10/fixed-spark-setup-error-not-found-spark.html

答案 4 :(得分:0)

对于Ubuntu用户

我有完全相同的错误,我按照以下方式修复它。

如果您从终端 关闭并重新打开终端 ,然后 重新启动 spark-shell 火花壳

答案 5 :(得分:0)

我有同样的错误。就我而言,硬盘几乎快满了。我从磁盘上删除了一些大文件,然后在重新启动后再次运行。有效!但是我认为并非总是如此。