Spark / Scala并行写入redis

时间:2016-04-15 03:57:28

标签: scala apache-spark redis spark-redis

是否可以通过spark并行写入Redis?

(或者:如何从火花中快速写出成千上万的键/列表)

目前,我正在按顺序写入Redis,并且它正在永远。我需要写大约90000个列表(长度为2-2000)。速度非常重要。目前,它正在接受1小时的订单。 Redis的传统基准测试声称每秒有数千个Redis写入,但在我的管道中,我并没有接近它。

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

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

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