pyspark - 将 pyspark 数据帧转换为 JSON 时的性能问题
问题描述
我想以有效的方式将 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 秒。
解决方案
推荐阅读
- html - 在使用 javascript 加载内容的网页上进行网页性能测试
- javascript - 未拾取 Package.json 变量
- selenium-webdriver - 使用 selenium 在内存数据库中连接 H2 时出现问题
- javascript - 如果浏览器无法发送/接收 UDP,那么在 node.js 中使用 UDP 有什么意义?
- javascript - 将网络摄像头流从客户端发送到服务器以进行图像分析
- javascript - React Hook useEffect 缺少依赖项:“roomID”和“sotreId”。要么包含它们,要么删除依赖数组 react-hooks/exhaustive-deps
- node.js - MongoDB 管理来自节点 js 服务器的访问
- zapier - 如何在 Zapier 中集成 .Net Webhook 接收器以获取收到新邮件的通知?
- r - 垂直图形之间的大空间-闪亮
- c# - EF Core 在不同查询中重用子查询