尽管缓存了输入df,但仍存在火花流性能问题

时间:2020-04-17 08:17:40

标签: apache-spark apache-spark-sql spark-streaming apache-spark-2.0

我正在使用spark dstream方法。我有一个输入RDD,读取后便立即将其缓存。

val cachedDf = rdd
             .repartition(200)
             .persist(StorageLevel.MEMORY_AND_DISK).toDF()

我还看到输入rdd缓存在spark应用程序用户界面的storage标签中。我的卡夫卡主题有15 partitions

但是,在对缓存的数据帧执行每个操作之后,我看到15个任务在我的应用程序中多次运行(不仅是在第一个操作之后,在每个操作之后),这降低了我的应用程序在较长时间内的运行速度。

这些任务运行2-3分钟,并随着每批处理的消息数的增加而增加。

我不明白的是,如果要重新划分数据帧并立即对其进行持久化,正在执行的15个任务是什么?

每个其他主要任务都有200个子任务,这15个子任务中正在读取什么?

我的应用程序是否再次从kafka读取?

0 个答案:

没有答案