我想以有效的方式将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秒。