![](/img/trans.png)
[英]How can I increase parallelism with loading large XML file with spark-xml?
[英]Spark and Kafka: how to increase parallelism for producer sending large batch of records improving network usage?
我正在深入了解如何从 Spark 向 Kafka 主题发送(生成)大量记录。
从文档中,我可以看到有人试图在相同工作人员的任务中使用相同的生产者。 当一次发送大量记录时,网络将成为瓶颈(以及内存,因为 kafka 会缓冲要发送的记录)。 所以我想知道提高网络使用率的最佳配置是什么:
假设我对 1 和 2 的选项如下(来自 Databricks):
为了更好地利用网络IO,哪个是最好的选择?
我现在对此的想法,但我不确定,所以我在这里问你:虽然从 CPU 的角度来看(昂贵的计算工作),1)会更好(更多的并发性,更少的洗牌),从从网络 IO 的角度来看,我宁愿使用 2),即使我的整体内核数量较少。
感谢您对此的任何意见。
谢谢你们。
最好的解决方案是让更多的工人来实现并行(水平扩展)。 DataFrame 必须使用 Kafka 作为接收器的流写入到 Kafka,如这里所解释的https://docs.databricks.com/spark/latest/structured-streaming/kafka.html (如果您不想拥有持久流,您可以始终使用选项触发器一次)。 此外,您可以假设 1 个数据帧分区 = 1cpu,因此您可以另外优化这种方式(但流中的数据块通常会自动处理它)。
在 Kafka 方面,我想拥有类似于 spark/databricks 工人的分区/代理数量可能会很好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.