有时候我们需要用广播变量来使用字典,但是如果字典中的内容是经常变化的,这是广播变量就不能满足我们的需求了。这时可以选择将字典文件读入到redis中,就能保证在字典数据变化的时候我们使用的是最新的字典了。
首先,要构建一个获取jedis 客户端的类。
object JedisPools {
private val config = new GenericObjectPoolConfig()
private val pool = new JedisPool(config,"192.168.9.12",6379)
def getResource()=pool.getResource
}
把字典文件写入redis中,
object Dict2Redis {
def main(args: Array[String]): Unit = {
// 0 校验参数个数
if (args.length != 1) {
println(
"""
|cn.dmp.tools.AppDict2Redis
|参数:
| appdictInputPath
""".stripMargin)
sys.exit()
}
// 1 接受程序参数
val Array(appdictInputPath) = args
// 2 创建sparkconf->sparkContext
val sparkConf = new SparkConf()
sparkConf.setAppName(s"${this.getClass.getSimpleName