apache-spark - 尽管缓存了输入 df,但 Spark 流式传输性能问题
问题描述
我正在使用火花 dstream 方法。我有一个输入 RDD,我一读到它就缓存它。
val cachedDf = rdd
.repartition(200)
.persist(StorageLevel.MEMORY_AND_DISK).toDF()
我还看到输入 rdd 被缓存在storage
我的 spark 应用程序 UI 的选项卡中。我的卡夫卡主题有15 partitions
.
但是,在缓存数据帧上的每个操作之后,我看到 15 个任务在我的应用程序中多次运行(不仅仅是在第一个操作之后,在每个操作之后),这会降低我的应用程序在较长时间内运行的速度。
这些任务运行 2-3 分钟,并随着每批处理的消息数量的增加而增加。
我不明白的是,如果我正在重新分区我的数据帧并立即将其持久化,那么运行的 15 个任务是什么?
其他每个主任务都有 200 个子任务,这 15 个子任务中读取的是什么?
我的应用程序是否再次从 kafka 读取?
解决方案
推荐阅读
- kendo-ui - 在剑道时间选择器中选择时间时,剑道 UI Angular 过滤器菜单会自动关闭
- r - 如何在同一个图中创建两个 ggplot 箱线图?
- r - 如果与 lapply 一起使用,为什么函数返回用 ÿþ 编码的数据值?
- javascript - 如何以编程方式将访客与会者添加到保存时的 GSuite 日历事件
- amazon-web-services - 使用 aws cli 将 Lambda 与 REST 端点集成
- google-sheets - 谷歌电子表格 - hlookup 使用 arrayformula 应用于新行
- mysql - MySQL:从每日记录中插入每月值
- javascript - 如何在不使用 cookie 且不编写后端代码的情况下跨页面跟踪用户?
- javascript - 密码确认后如何将用户重定向到url?
- jquery - 完整的日历标题选项作为下拉导航