apache-spark - 当我们在 where 中使用过滤器时,spark 如何读取数据
问题描述
我正在从一个巨大的表(900 GB)中读取一个密钥。它只是一个条件,但火花已经启动了许多没有大量任务的工作。
我正在使用 11 节点集群(每个节点 128 GB 内存和 16 个内核)
我知道我们可能需要更多的任务,但是为什么有这么多的工作,为什么不能在一个阶段处理......?
有人可以解释一下当我们使用 where 条件时内部会发生什么..
感谢您的回复。请检查这张图片
解决方案
Spark 用于批量处理,而不是单个键查找,因为您的图像显示在带有索引的 ORACLE 数据库中。当然,对于多行的 JOIN,这些查找更好。
Spark 不知道您在做什么(语义上),因此它遵循其分布式模型和并行处理 - 意味着许多任务 - 用于许多分区。
该图像不适用于 Spark。
推荐阅读
- git - 合并没有引入合并的更改
- php - 如何修复 laravel 表单提交?
- python - “消息”对象没有属性“用户”
- python - 有没有办法自动回答弹出的警报框?
- javascript - array.find 返回多个结果
- javascript - 如何在javascript中通过给定的id查找对象的所有数据
- c - K&R 示例中显示的函数指针的用途是什么
- .net - 调用 DbConnection.EnlistTransaction 和设置 DbCommand.Transaction 有什么区别?
- android - 与 Room 相比,SQLDelight 性能较慢
- node.js - Kubernetes 中的 Redis 不与节点连接