【发布时间】: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