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

发布于 2022-09-05 02:06:34 字数 618 浏览 10 评论 0

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

报错:
错误问题

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

报错:图片描述

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

已下线请稍等 2022-09-12 02:06:34

第二种写法是错误的。典型的算子访问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不是线程安全的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文