【发布时间】:2019-01-25 20:12:48
【问题描述】:
我想用 .contains() 替换字符串数组中的字符串“a”来检查数组中的每个字符串。这可能吗?
val filtered = stream.flatMap(status => status.getText.split(" ").filter(_.contains("a")))
编辑:
也试过这个(sc是sparkContext):
val ssc = new StreamingContext(sc, Seconds(15))
val stream = TwitterUtils.createStream(ssc, None)
val filtered = stream.flatMap(status => status.getText.split(" ").filter(a.contains(_)))
并得到以下错误:
java.io.NotSerializableException: org.apache.spark.streaming.twitter.TwitterInputDStream 的对象可能作为 RDD 操作闭包的一部分被序列化。这是因为 DStream 对象是从闭包中引用的。请重写此 DStream 中的 RDD 操作以避免这种情况。已强制执行此操作以避免 Spark 任务因不必要的对象而膨胀。
然后我尝试在使用之前广播数组:
val aBroadcast = sc.broadcast(a)
val filtered = stream.flatMap(status => status.getText.split(" ").filter(aBroadcast.value.contains(_)))
得到了同样的错误。
谢谢
【问题讨论】:
标签: scala apache-spark spark-streaming