我是运行一个火花卡夫卡流式工作与4个执行者(每个核心1)。卡夫卡源主题有50个分区。
在流java程序的前端分区中,我连接到oracle并做一些工作。Apache DBCP2用于连接池。
火花流程序是建立4个连接到数据库-可能是为每个执行者1。但是,我的期望是-由于有50个分区,应该有50个线程正在运行,并且存在50个数据库连接。
如何在不增加核数目的情况下增加并行性。
发布于 2016-12-13 23:21:39
你的期望是错的。其中一个核心是星火命名中可用的线程和一个可在当时处理的分区。
4个“核心”-> 4线程-> 4分区同步处理。
发布于 2016-12-18 16:00:27
在火花执行器中,每个核心进程逐个分区(一次一次)。因为您有4个执行器,而且每个都只有一个核心,这意味着一次只能并发处理4个分区。因此,如果您的Kafka有50个分区,那么您的星火集群需要运行13轮(每轮4个分区,50 /4= 12.5)才能完成批处理作业。这也是为什么您只能看到到数据库的4个连接。
https://stackoverflow.com/questions/41132157
复制相似问题