apache-spark - 从 Kafka 读取数据时如何优化 Spark Streaming 作业的延迟?
问题描述
问题描述
我想加快我的流媒体管道。到目前为止,批处理的处理时间约为 10 秒。同样在 2-3 个月内,我预计 x3 消息会增长。
管道描述
我有 Spark Streaming 作业,它从 Kafka 主题读取数据,对其进行处理(反序列化和丰富数据集)并将输出写入输出主题。
卡夫卡配置
- 1 个主题
- 每个主题 75 个分区
- 消息生成频率是一个分区中每分钟 1000 万条消息(约每秒 165000 条)
- 消息格式是 avro(在 avro 下是 json 事件,有 12-15 个字段)
火花配置
- 75 个执行器(根据映射建议 - 1 个 Kafka 分区到 1 个 Spark 执行器)
- 触发时间 - 1 分钟
已经做了什么?
- 我要求将 Kafka 中的分区数量从 75 个增加到 500 个(这是不可能的)
- 我建议创建一个具有 500 个分区的新主题,并设置从具有 75 个分区的当前主题复制到一个新主题(这也是不可能的)
- 我尝试使用消息大小(max.partition.fetch.bytes) - 它没有多大帮助,因为如果 Spark 不能正确并行化工作,它并不关心消息大小是多少
所以我正在寻找一种方法来并行化 Spark 方面的工作。有什么想法可以在这里做吗?
解决方案
推荐阅读
- laravel - 播种时如何解决upsert问题?(拉拉维尔)
- python - 导入下载后找不到模块
- nhibernate - 我如何打印出 query.List()
- javascript - 注入变量以响应本机表
- javascript - 每次用户登录失败时显示警报
- flutter - 底部溢出 42 px,尽我所能无法理解为什么会发生这种情况
- javascript - 为什么随机出现一个错误说 Uncaught DOMException: Failed to execute 'querySelector' on 'Element': '' is not a valid selector
- c# - 如何模拟使用 nunit 和 moq 显示提示的 Dialog 服务方法
- r - 在用户创建的函数上使用列表和映射来对 r 中的编码对比进行求和
- excel - 使用加载项中的函数计算 Excel 数据模型中的列