【问题标题】:Spark-shell behave different from Spark submitSpark-shell 的行为与 Spark 提交不同
【发布时间】:2015-04-20 03:39:59
【问题描述】:

我使用RDD[T]fitler 方法。当我使用spark-shell 执行时,我得到了task not serializable 异常。

trait MyBase extends Serializable
object Type1 extends MyBase
object Type2 extends MyBase



object TestShell {


  def readline(line:String) = {
    if (line.contains( "scroll" )) Type1 else Type2
  }

  def main(args:Array[String])(implicit sc:org.apache.spark.SparkContext) = {

    val data = sc.textFile( "D:\\work\\myfile" )

    val parsed = data map (readline)

    parsed filter (_ == Type1) take 100 foreach println

  }
}

但是,当我在本地模式下在程序中创建 SparkContext(或使用 spark 提交)时,它运行良好。

object MainDesktop {

  val appName = "newApp"
  val master = "local"

  val conf = new SparkConf().setAppName(appName).setMaster(master)
  implicit val sc = new SparkContext(conf)

  def main(args:Array[String]):Unit = {

    TestShell.main(args)(sc)

  }

}

是 Spark Shell 的 bug 吗?

【问题讨论】:

标签: serialization apache-spark


【解决方案1】:

因此,当您尝试将代码分解为可重用对象时,您将遇到无法在所有地方捕获的任务。通常,除非您在 yarn-client 或 yarn-cluster 模式下运行,否则您不会击中所有这些。当您在本地模式下运行时,您是使用 local 还是 local[*] 作为您的 master?

【讨论】:

  • 我用 yarn-client 运行它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-05
  • 1970-01-01
  • 2017-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-11
相关资源
最近更新 更多