我使用Spark 2.0.1和Kafka 0.8.2。我们在主题中有6个分区。
我有一个流媒体管道=> kafka - > sparkStreaming(做一些操作) - >发帖给Http。
发布到http我正在使用java apache http client。
以下是代码
processedStream.foreachRDD {
rdd => {
rdd.foreachPartition {
partition => {
val client = ClientFactory.create() // gets http client
// grouping the data in order to avoid big data
val groupedPartitions = partition.toList.grouped(metricPerReq.toInt).toList
groupedPartitions.foreach(x=>postData(x,client))
//free up client resources
client.close()
}
}
}
}
但即使增加执行者的数量,代码也会花费相同的时间。 理想情况下,我希望通过增加执行程序的数量来获得一些吞吐量增益。 当使用4个核心以及8个核心(约2分钟)时,所花费的时间是相同的,其中1个执行器是1核心和1核心。 1gb。
如何提高并行度?我也试过了重新分区,但它没有提升性能。