scala - Spark/Scala 并行写入 redis

标签 scala apache-spark redis spark-redis

是否可以从 spark 并行写入 Redis?

(或者:spark如何快速写出上万个key/list)

目前,我正在按顺序向 Redis 写入 key ,这需要永远。我需要写大约 90000 个列表(长度为 2-2000)。速度极其重要。目前,它大约需要 1 小时。 Redis 的传统基准测试声称每秒有数千次 Redis 写入,但在我的管道中,我离这个还差得很远。

感谢任何帮助。

最佳答案

单个 Redis 实例在一个线程中运行,因此操作本质上是顺序的。如果你有一个 Redis 集群,那么写入数据的实例取决于 hash slot从正在写入的 key 计算。这个哈希函数(除其他外)确保负载分布在集群中的所有 Redis 实例上。如果您的集群有 N 个实例,那么您(几乎)最多可以执行 N 个并行写入。这是因为每个集群实例仍然是一个线程。一个合理的 Spark Redis 连接器应该有效地利用集群。

无论哪种方式,Redis 都非常快,特别是如果您使用 mass inserts .

关于scala - Spark/Scala 并行写入 redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36637997/

相关文章:

scala - 在scala中获取当前文件的文件名

mysql - Spark 无法解析 MySQL 文本列

regex - 如何在redis keys命令中应用 'OR'条件

arrays - Scala:array.toList 与 array.to[List]

java - 为什么抽象变量需要在 Scala 中进行类型注释?

具有多种类型的Scala变量

python - 获取 Pyspark 中缺失评级的评级列表列,其中 0 已到位

azure - ADF 映射数据流 - 重用单个运行的 Spark 集群来并行执行映射数据流

node.js - nodejs Kue作业处理逻辑

redis accumulate & publish 一组操作