Scala(齐柏林飞艇):任务不可序列化

Scala(齐柏林飞艇):任务不可序列化,scala,apache-spark,apache-zeppelin,Scala,Apache Spark,Apache Zeppelin,我试图通过流媒体从Twitter上获取数据。 我正在twtvaribale中获取数据 val ssc = new StreamingContext(sc, Seconds(60)) val tweets = TwitterUtils.createStream(ssc, None, Array("#hadoop", "#bigdata", "#spark", "#hortonworks", "#HDP")) //tweets.saveAsObjectFiles("/models/Twitter_f

我试图通过流媒体从Twitter上获取数据。 我正在
twt
varibale中获取数据

val ssc = new StreamingContext(sc, Seconds(60))
val tweets = TwitterUtils.createStream(ssc, None, Array("#hadoop", "#bigdata", "#spark", "#hortonworks", "#HDP"))
//tweets.saveAsObjectFiles("/models/Twitter_files_", ".txt")
 case class Tweet(createdAt:Long, text:String, screenName:String)

val twt = tweets.window(Seconds(60))
//twt.foreach(status => println(status.text())

import sqlContext.implicits._

val temp = twt.map(status=>
  Tweet(status.getCreatedAt().getTime()/1000,status.getText(), status.getUser().getScreenName())
    ).foreachRDD(rdd=>
      rdd.toDF().registerTempTable("tweets")
    )
twt.print

ssc.start()
以下是错误:

  org.apache.spark.SparkException: Task not serializable
        at org.apache.spark.util.ClosureCleaner$.ensureSerializable(ClosureCleaner.scala:304)
        at org.apache.spark.util.ClosureCleaner$.org$apache$spark$util$ClosureCleaner$$clean(ClosureCleaner.scala:294)
        at org.apache.spark.util.ClosureCleaner$.clean(ClosureCleaner.scala:122)
        at org.apache.spark.SparkContext.clean(SparkContext.scala:2032)
        at org.apache.spark.streaming.dstream.DStream$$anonfun$map$1.apply(DStream.scala:528)
        at org.apache.spark.streaming.dstream.DStream$$anonfun$map$1.apply(DStream.scala:528)
        at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:147)
        at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:108)
        at org.apache.spark.SparkContext.withScope(SparkContext.scala:709)
        at org.apache.spark.streaming.StreamingContext.withScope(StreamingContext.scala:266)

Caused by: java.io.NotSerializableException: org.apache.spark.streaming.StreamingContext

您的
Tweet
类不可
Serializable
,因此请扩展该类


这是一个常见的Spark问题,堆栈会准确地告诉您自Spark 1.3以来尝试序列化的内容,我相信您的
Tweet
类是不可
序列化的,所以请扩展它


这是一个常见的Spark问题,堆栈准确地告诉您自Spark 1.3以来尝试序列化的内容,我相信

我添加了这样的内容:case-class Tweet(createdAt:Long,text:String,screenName:String)扩展了Serializable。这样做正确吗?因为它给了我同样的错误。是的,没错。你能展示stacktrace的更多信息吗?看看它是怎么写的“字段名:ssc”和上面的“对象不可序列化”吗?我认为你的问题中缺少一些代码。那是你的齐柏林飞艇牢房吗?ssc从何而来?你对StreamingContext有什么建议吗?我认为问题在于
twt.print
不应该在那里。这也不是测试数据的正确方法。另外,您正在为每个RDD twitter提要注册一个新的临时表,但对该表不做任何操作……我添加了如下内容:案例类Tweet(createdAt:Long,text:String,screenName:String)extensed Serializable。这样做正确吗?因为它给了我同样的错误。是的,没错。你能展示stacktrace的更多信息吗?看看它是怎么写的“字段名:ssc”和上面的“对象不可序列化”吗?我认为你的问题中缺少一些代码。那是你的齐柏林飞艇牢房吗?ssc从何而来?你对StreamingContext有什么建议吗?我认为问题在于
twt.print
不应该在那里。这也不是测试数据的正确方法。另外,您正在为每个RDD twitter提要注册一个新的临时表,但对该表不做任何操作。。。