![JAR search and dependency download from the Maven repository](/logo.png)
org.apache.spark.sql.redis.stream.RedisSourceRdd.scala Maven / Gradle / Ivy
The newest version!
package org.apache.spark.sql.redis.stream
import com.redislabs.provider.redis.RedisConfig
import com.redislabs.provider.redis.util.ConnectionUtils.withConnection
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.redis.stream.RedisSourceTypes.StreamEntry
import org.apache.spark.{Partition, SparkContext, TaskContext}
/**
* RDD of EntryID -> StreamEntry.fields
*
* @author The Viet Nguyen
*/
class RedisSourceRdd(sc: SparkContext, redisConfig: RedisConfig,
offsetRanges: Seq[RedisSourceOffsetRange], autoAck: Boolean = true)
extends RDD[StreamEntry](sc, Nil) {
override def compute(split: Partition, context: TaskContext): Iterator[StreamEntry] = {
val partition = split.asInstanceOf[RedisSourceRddPartition]
val offsetRange = partition.offsetRange
val streamReader = new RedisStreamReader(redisConfig)
streamReader.unreadStreamEntries(offsetRange)
}
override protected def getPartitions: Array[Partition] = {
offsetRanges.zipWithIndex.map { case (e, i) => RedisSourceRddPartition(i, e) }
.toArray
}
}
case class RedisSourceRddPartition(index: Int, offsetRange: RedisSourceOffsetRange)
extends Partition
© 2015 - 2025 Weber Informatics LLC | Privacy Policy