为什么不能在Spark Streaming中使用带有ssc.checkpoint()的Dstream.transform()?

时间:2016-12-01 06:28:53

标签: apache-spark pyspark spark-streaming

当我尝试将DStream.transform与ssc.checkpiont一起使用时:

initRDD = sc.parallelize(list('aeiou')).map(lambda x: (x, 100)).persist()

ssc = StreamingContext(sc, batchDuration=3)
ssc.checkpoint('checkpoint')

lines = ssc.socketTextStream('localhost', 9999)
items = lines.flatMap(lambda x: x.split())
counts = items.countByValue().transform(lambda x:x.join(initRDD)).mapValues(sum)
counts.pprint()

有一个例外:

  

您似乎正在尝试广播RDD或引用   来自行动或转型的RDD。 RDD转换和操作   只能由驱动程序调用,而不能在其他内部调用   变换;例如,rdd1.map(lambda x:rdd2.values.count()*   x)因为值转换和计数动作无效   无法在rdd1.map转换中执行。更多   信息,请参阅SPARK-5063。

但如果我评论ssc.checkpoint:

# ssc.checkpoint('checkpoint')

代码也可以正常工作

0 个答案:

没有答案