scala - 为什么我的 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 池的最佳设置的最佳方法是什么
解决方案
推荐阅读
- c# - 我可以将 Task.WhenAll() 结果设置为 Task.WhenAll() 例程中的值吗?
- python - 如何让自动编码器在小型图像数据集上工作
- c# - Asp.net 核心推送通知到 Xamarin(Android、IOS)
- ruby - _layouts 文件夹中缺少主页布局,但可以使用
- android - 如何从 APK 文件中提取 API 调用?
- r - 使用循环和函数附加到列表时出现“未找到列表”
- r - 使用开始和结束位置的索引在向量的元素之间求和
- dart - Flutter 从不同的 dart 文件访问父 Scaffold
- javascript - Facebook Page Plugin 给出 FBProvider is not defined 错误
- python - 切割表面以使其简单连接/将表面切割成拓扑圆盘?