我想以有效的方式将 pyspark 数据框内容插入 Redis。尝试了几种方法,但都没有给出预期的结果。
将 df 转换为 json 需要 30 秒。目标是将 json 有效负载设置到 Redis 集群中以供使用。
我也在尝试利用 spark-redis https://github.com/RedisLabs/spark-redis/blob/master/doc/python.md库将结果插入到 Redis 中,以便将结果插入到所有工作节点的 Redis,看看它是否有很大的不同。即使这个过程也需要相同的时间才能将结果插入 Redis
我正在寻找有关如何清除瓶颈的专家建议,看看我是否可以将其缩短到不到 5 秒,谢谢。
我正在使用具有 1+4 个节点的 EMR 集群,每个节点有 16 个内核和 64 Gigs 内存。
js = json.dumps(df.toJSON().collect()) #takes 29 seconds
redis.set(key1, js) #takes 1 second
df.write.format("org.apache.spark.sql.redis").option("table", key1).mode('append').save() #takes 28 seconds
将 df 转换为 json 的前两行代码需要 29 秒,设置为 redis 需要 1 秒。
或者
最后一行代码使用工作节点将 df 内容直接插入 Redis,但需要大约 28 秒。