需求:希望在Spark RDD算子中访问Redis。
思路:通过Broadcast变量将Redis配置信息广播到所有计算节点;通过lazy关键字实现Redis连接的延迟创建。
具体步骤:
1.定义Redis客户端包装类
package xxx import redis.clients.jedis.{Jedis, JedisPool, JedisPoolConfig, Protocol} import org.apache.commons.pool2.impl.GenericObjectPoolConfig import org.slf4j.LoggerFactory import com.typesafe.scalalogging.slf4j.Logger /** * Redis客户端包装,用于提供分布式接口 * */ class RedisSink(makeJedisPool : () => JedisPool) extends Serializable {
lazy val pool = makeJedisPool()<
|