依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
代码
工具类
获取连接的工具。传入参数为选定的数据库的编号
package utils
import redis.clients.jedis.JedisPool
/**
* 获取redis连接的工具
*/
object GetJedisConn {
private lazy val pool = new JedisPool
def getJedis(index:Int=0) ={
// 获取连接
val resource = pool.getResource
// 选择库
resource.select(index)
// 返回工具
resource
}
}
代码
set 存储单个大文本非结构化数据
hset 则存储结构化数据
此处选择的是
jedis.hset(“train”,x(0),x(1))
传入参数:key,文件,值
Long hset(String key, String field, String value)
package day06.duobiaoguanlian
import org.apache.spark.sql.SparkSession
import utils.GetJedisConn
/**
* redis进行对表的绑定
*/
object Toredis {
def main(args: Array[String]): Unit = {
val session = SparkSession
.builder().appName(this.getClass.getName).master("local[*]").getOrCreate()
//隐式转换
import session.implicits._
//故障信息表
val trainMessage = session.read.parquet(args(0))
//列车出厂时间表
val trainTimg = session.sparkContext.textFile(args(1))
//对列车出厂时间进行处理
//获得有效数据
val filter = trainTimg.map(_.split("\\|")).filter(x=>x.length>=2)
//对有效的数据进行处理,写入redis。每次设计到了redis对象的获取,则使用mappartitions
filter.foreachPartition(x=>{
val jedis = GetJedisConn.getJedis(6)
x.foreach(x=>{
jedis.hset("train",x(0),x(1))
})
jedis.close()
})
//资源释放
session.stop()
}
}