我正在运行一个Spark-Kafka Streaming作业,有4个执行器(每个1个核心).而kafka源主题有50个分区.
在流式java程序的foreachpartition中,我正在连接到oracle并做一些工作. Apache DBCP2用于连接池.
Spark-streaming程序与数据库建立4个连接 – 每个执行程序可能为1.但是,我的期望是 – 由于有50个分区,应该有50个线程在运行并且存在50个数据库连接.
如何在不增加内核数量的情况下增加并行度.
解决方法
你的期望是错误的.一个核心是Spark命名法中的一个可用线程和一个可以在当时处理的分区.
4“核心” – > 4个主题 – > 4个分区经过精心处理.