IgniteSqlRDD只有一个分区

时间:2017-01-03 10:00:17

标签: ignite

我简要介绍了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))
    }
}

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

1 个答案:

答案 0 :(得分:1)

geom_line()是一个内部实现,仅用于完全提取到驱动程序的结果集,因此不会分发此RDD。因此只有一个分区。

另一方面,

dput(graphOR1)表示分发的Ignite缓存。