scala将数据写入Redis

6 篇文章 0 订阅

依赖

		<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()
  }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值