【问题标题】:The broadcast created by NewHadoopRDD will not be removed?NewHadoopRDD创建的广播不会被删除?
【发布时间】:2019-04-10 17:36:52
【问题描述】:

我想通过 spark 流读取 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 Blocks都是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 时。广播将被正确删除。

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

【问题讨论】:

    标签: hdfs spark-streaming broadcast


    【解决方案1】:

    自行解决。

    这是 spark 2.1 和 2.2 的错误。

    SPARK-21357,这个 jira 描述了发生的事情。

    【讨论】:

      猜你喜欢
      • 2021-01-17
      • 2014-02-01
      • 1970-01-01
      • 2011-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      相关资源
      最近更新 更多