将pyspark数据框转换为JSON时出现性能问题

时间:2019-06-18 04:21:43

标签: pyspark apache-spark-sql pyspark-sql amazon-emr spark-redis

我想以有效的方式将pyspark数据框内容插入Redis。尝试了几种方法,但没有一个能得到预期的结果。

  1. 将df转换为json需要30秒。目标是将json有效负载设置为Redis集群以供使用。

  2. 我还尝试使用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秒。

0 个答案:

没有答案