spark向redis写入数据时产生的序列化问题

在用spark写入数据到redis里时候,如果这样用,数据能够写入,不过很慢,而且没写完就会报错:
使用方法

报错:
错误问题

如果这样用直接报一个序列化的错误:
图片描述

报错:图片描述

请问怎么解决,好像没有好的写入办法

阅读 6.1k
1 个回答

第二种写法是错误的。典型的算子访问Driver。

第一种你尝试下

sim_follow.foreachPartition(it => {
      val jedis = new Jedis("xxx",6379)
      for(tuple <- it){
        val key = "xxx" + tuple._1
        val value = tuple._2.toString
        jedis.set(key,value)
      }
    })

像这种对数据库/缓存等批量更新操作,最好是用foreachPartition方法,每个Partition只创建一个连接对象。另外要注意一点,Jedis不是线程安全的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题