spark <console>:12:错误:找不到:值sc </console>

时间:2014-08-08 12:42:10

标签: scala apache-spark distributed-computing

我写了以下内容:

val a = 1 to 10000
val b = sc.parallelize(a)

并显示错误说:

<console>:12: error: not found: value sc

任何帮助?

7 个答案:

答案 0 :(得分:3)

在我的情况下,我在本地Windows系统上安装了spark,我观察到同样的错误,但这是因为下面的问题

问题:引起:java.lang.RuntimeException: HDFS上的root scratch目录:/ tmp / hive应该是可写的

这是因为权限问题。我通过使用以下命令更改权限解决了这个问题。尽管日志说明了&#34;在hdfs&#34;这是在Windows系统上

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

答案 1 :(得分:2)

当您的类路径不正确时会发生这种情况。目前这是Spark中的open issue

> spark-shell 

...
...
14/08/08 18:41:50 INFO SparkILoop: Created spark context..
Spark context available as sc.

scala> sc
res0: org.apache.spark.SparkContext = org.apache.spark.SparkContext@2c1c5c2e

scala> :cp /tmp
Added '/tmp'.  Your new classpath is:
...

scala> sc
<console>:8: error: not found: value sc

您可能需要从repl外部更正类路径。

答案 2 :(得分:1)

您收到此错误,因为未定义sc。我会尝试:

sc = SparkContext(appName = "foo")

通常发生在我身上的另一件事是没有在集群中获得Kerberos票证,因为我也忘记了。

至于Spark中的&#34;开放问题&#34; Solnanki提到,我很确定这不再是 了。

答案 3 :(得分:1)

首先检查spark-shell命令运行后的日志文件 是否将SparkContext初始化为sc。 如果没有正确初始化SparkContext

您必须在spark环境中设置IP地址。

conf / spark.env.sh 中打开env文件并添加以下行

导出SPARK_LOCAL_IP =&#34; 127.0.0.1&#34;

答案 4 :(得分:0)

我在Cloudera Quickstart VM上尝试使用Spark时遇到此错误。原来是/user/spark上的hdfs文件权限问题。

我无法切换到用户“spark”,我得到了一个用户不可用的错误。 使用以下命令更改文件权限可以解决它。

sudo -u hdfs hadoop fs -chmod -R 1777 /user/spark

scala> val data = 1 to 10000
data: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170...
scala> val distData = sc.parallelize(data)
distData: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at parallelize at <console>:14

答案 5 :(得分:0)

我遇到了同样的问题。在我的情况下,JAVA_HOME未正确设置导致此问题。令人惊讶的是SPARK会启动,但sc上下文在创建实例时遇到了问题。当我修复JAVA_HOME指向正确的java目录时,此问题已得到解决。我必须关闭会话并重新打开一个新会话,以确保更新路径并打开新会话。

我希望这会有所帮助。

答案 6 :(得分:0)

this thread中所述,一种解决方案可能是关闭权限检查。

  

在cloudera manager中,转到高级下的hdfs配置,并将以下代码放入&#34; HDDS服务高级配置代码段(安全阀)中,用于hdfs-site.xml&#34; :

<property>
<name>dfs.permissions</name>
<value>false</value>
</property>

之后,需要重启HDFS组件。

它对我有用。但是,它可能不适合生产环境。