NewHadoopRDD创建的广播不会被删除吗?

时间:2018-11-07 09:46:57

标签: hdfs spark-streaming broadcast

我想通过火花流读取hdfs上的文件。我写一些这样的代码。

SparkConf sparkConf = new SparkConf().setMaster("local[4]");
JavaStreamingContext streamingContext = new JavaStreamingContext(sparkConf, 
                                           Durations.seconds(batchTime);

JavaDStream<String> sourceStream = streamingContext.textFileStream(hdfsPath)
sourceStream.mapToPair(pairFuntion)
            .reduceByKey(reduceByKeyFunction)
            .foreachRDD(foreachRddFunction);

一切正常,但是我发现spark UI所显示的RDD Block将会继续增加。 然后我发现RDD块是NewHadoopRDD创建的所有广播

//A Hadoop Configuration can be about 10 KB, which is pretty big, so 
broadcast it
private val confBroadcast = 
                     sc.broadcast(newSerializableConfiguration(_conf))

我的spark版本是2.2.0。当我将spark版本更改为1.6.2时。广播将被正确删除。

那么,我错过了一些配置吗?或者是其他东西? 有什么建议吗?谢谢。

1 个答案:

答案 0 :(得分:0)

自己解决这个问题。

这是spark 2.1和2.2的错误。

SPARK-21357,这个吉拉语描述了发生的事情。