繁体   English   中英

Scala / Spark可序列化错误-加入无效

[英]Scala/Spark serializable error - join don't work

我正在尝试在2个RDD之间使用join方法并将其保存到cassandra,但是我的代码不起作用。 一开始,我得到了一个巨大的Main方法,一切都运行良好,但是当我使用函数和类的时候没用。 我是scala和火花的新手

代码是:

  class Migration extends Serializable { 

  case class userId(offerFamily: String, bp: String, pdl: String) extends Serializable
  case class siteExternalId(site_external_id: Option[String]) extends Serializable
  case class profileData(begin_ts: Option[Long], Source: Option[String]) extends Serializable

  def SparkMigrationProfile(sc: SparkContext) = {

    val test  = sc.cassandraTable[siteExternalId](KEYSPACE,TABLE)
     .keyBy[userId]
     .filter(x => x._2.site_external_id != None)

    val profileRDD = sc.cassandraTable[profileData](KEYSPACE,TABLE)
    .keyBy[userId]

    //dont work
   test.join(profileRDD)
    .foreach(println)

    // don't work
     test.join(profileRDD)
     .saveToCassandra(keyspace, table)

   }

在开始时,我得到了著名的:线程“ main”中的异常org.apache.spark.SparkException:任务无法在处序列化。 所以我扩展了我的主班和案例班,但是仍然无法正常工作。

我认为您应该将案例类从Migration类移到专用的文件和/或对象。 这应该可以解决您的问题。 此外,默认情况下,Scala案例类可序列化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM