IgniteSqlRDD 只有一个分区

IgniteSqlRDD has only one partition

我简单介绍一下IgniteRDD的代码,

class IgniteSqlRDD[R: ClassTag, T, K, V](
    ic: IgniteContext,
    cacheName: String,
    cacheCfg: CacheConfiguration[K, V],
    qry: Query[T],
    conv: (T) ⇒ R,
    keepBinary: Boolean
) extends IgniteAbstractRDD[R, K, V](ic, cacheName, cacheCfg, keepBinary) {
    override def compute(split: Partition, context: TaskContext): Iterator[R] = {
        new IgniteQueryIterator[T, R](ensureCache().query(qry).iterator(), conv)
    }

    override protected def getPartitions: Array[Partition] = {
        Array(new IgnitePartition(0))
    }
}

我注意到它硬编码了只有一个的分区数,这将显着降低并行度为一的性能。请问为什么这么设计,谢谢!

IgniteSqlRDD 是一种内部实现,仅用于完全获取驱动程序的结果集,因此此 RDD 未分发。因此只有一个分区。

IgniteRDD另一方面代表一个分布式的Ignite缓存。