当我们在 where 中使用过滤器时,spark 如何读取数据
Posted
技术标签:
【中文标题】当我们在 where 中使用过滤器时,spark 如何读取数据【英文标题】:how spark reads data when we are using a filter in where 【发布时间】:2020-04-24 11:44:44 【问题描述】:我正在从一个很大 (900 GB) 的表中读取一个密钥。 它只是一个条件,但火花已经启动了许多没有大量任务的工作。
我正在使用 11 节点集群(每个节点 128 GB 内存和 16 个内核)
我知道我们可能需要更多的任务,但为什么这么多工作,为什么不能在一个阶段处理......?
谁能解释一下当我们使用 where 条件时内部会发生什么..
感谢您的回复。please check this image
【问题讨论】:
什么是sample.table_a
?
从该表中仅读取 .. 它有 900GB
是什么样的桌子? Spark 视图、SQL 数据库表、Cassandra 表……?如果支持,Spark 会尝试将谓词推送到连接器。
Spark sql 表。数据块增量(镶木地板)
【参考方案1】:
Spark 用于批量处理,而不是像您的图像所示的单个键查找,例如带有索引的 ORACLE 数据库。对于多行的 JOIN,这些查找当然更好。
Spark 不知道您在做什么(语义上),因此它遵循其分布式模型并并行处理 - 意味着许多任务 - 用于许多分区。
该图像不适用于 Spark。
【讨论】:
以上是关于当我们在 where 中使用过滤器时,spark 如何读取数据的主要内容,如果未能解决你的问题,请参考以下文章
如果 where 子句已经修复,如何加快 spark sql 过滤器查询?