首页 > 解决方案 > 为什么我的 Spark Scala 作业在使用 Jedis 客户端读取/写入 Redis 池时挂起

问题描述

我有一个我之前发布的 spark scala 作业,它在这里运行了很长时间的任务,我发现由于与 Redis 的连接,该作业被卡住了。我看到通知说我的 Redis 集群在 Elasticache 中的 CPU 已用尽,我不确定什么是正确的修复方法。我正在使用 Jedis 客户端进行连接,到目前为止,我所有的任务都只是挂起并且永远不会完成。我发现 Redis 通过注释掉读/写和我的工作完成了这个瓶颈。

我正在使用 24 个 spark.executor.instances 和 12 个 spark.executor 核心在 EMR 上运行这项工作

Redis 配置如下:

RedisClient.port = 6379
RedisClient.poolConfig.setMaxIdle(300)
RedisClient.poolConfig.setMaxTotal(300)
RedisClient.poolConfig.setMaxWaitMillis(150000)

我正在循环读取/写入 Redis,您可以在我的上一篇文章中看到。这段代码以前在较小的数据集上工作过,所以我认为我必须调整设置,尽管我不确定应该将它们调整到什么,或者我是否缺少设置。找出 Redis 池的最佳设置的最佳方法是什么

标签: scalaapache-sparkredisjedisamazon-elasticache

解决方案


推荐阅读