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缓存。
我简单介绍一下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缓存。