【问题标题】:spark <console>:12: error: not found: value scspark <控制台>:12:错误:未找到:值sc
【发布时间】:2014-10-01 22:51:04
【问题描述】:

我写了以下内容:

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

它显示错误提示:

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

有什么帮助吗?

【问题讨论】:

  • sc 即。当 shell 启动时,Spark Context 已经可用
  • “在 shell 启动时可用”。或者更确切地说,它没有。提供有关您为解决该错误所采取的步骤的更多详细信息?
  • repl中在此之前是否有任何import语句或类路径更改?
  • @GovindSinghNagarkoti 哇这么多观察天赋哇 :)

标签: scala apache-spark distributed-computing


【解决方案1】:

当您的类路径不正确时会发生这种情况。这是目前 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】:

    我在 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
    

    【讨论】:

      【解决方案3】:

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

      sc = SparkContext(appName = "foo")
      

      我经常遇到的另一件事是在集群中没有获得 Kerberos 票证,因为我也忘记了。


      至于 Solnanki 提到的“Spark 中的未解决问题”,我很确定不再是这种情况了。

      【讨论】:

      • 另一位用户的评论:响应:上面的代码产生了关于 SparkContext 不接受任何参数的警告。所以试试吧:val sc = SparkContext 这解决了我的问题
      【解决方案4】:

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

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

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

      导出 SPARK_LOCAL_IP="127.0.0.1"

      【讨论】:

        【解决方案5】:

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

        我希望这会有所帮助。

        【讨论】:

          【解决方案6】:

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

          问题:原因:java.lang.RuntimeException:HDFS 上的根暂存目录:/tmp/hive 应该是可写的

          这是因为权限问题。我通过使用以下命令更改权限来解决它。虽然日志显示“在 hdfs 上”,但这是在 Windows 系统上

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

          【讨论】:

            【解决方案7】:

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

            在cloudera manager中,进入advanced下的hdfs配置,在“HDFS Service Advanced Configuration Snippet (Safety Valve) for hdfs-site.xml”中加入如下代码:

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

            之后,需要重启HDFS组件。

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

            【讨论】:

              猜你喜欢
              • 2016-08-16
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-11-03
              • 2021-10-25
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多