运行DSE 4.7
所以说我有一个4节点DSE Cassandra / Spark集群......
我有一张Cassandra表,里面有4,000,000条记录 .
在Spark上运行以下Spark SQL“select * from table where email =?或mobile =?”
Spark会将所有数据加载到RDD中,然后根据where子句进行过滤吗?每个spark节点每个节点都有1,000,000条记录加载到内存中吗?
spark会将所有数据加载到RDD中,然后根据where子句进行过滤吗?
这取决于您的数据库架构 . 如果您的查询明确地将扫描限制为单个C *分区(我们的 where email = ? or mobile = ? 肯定没有),Spark将仅加载部分数据 .
where email = ? or mobile = ?
在您的情况下,它将必须扫描所有数据 .
每个节点的每个节点都有1,000,000条记录加载到内存中吗?
同样,它取决于您的数据集大小和工作节点上的RAM量 . Spark RDD并不总是完全加载到RAM中,在你的情况下它可以被分成更小的部分(例如100k行),加载到ram中,根据你的查询进行过滤,然后逐个保存 .
1 回答
这取决于您的数据库架构 . 如果您的查询明确地将扫描限制为单个C *分区(我们的
where email = ? or mobile = ?
肯定没有),Spark将仅加载部分数据 .在您的情况下,它将必须扫描所有数据 .
同样,它取决于您的数据集大小和工作节点上的RAM量 . Spark RDD并不总是完全加载到RAM中,在你的情况下它可以被分成更小的部分(例如100k行),加载到ram中,根据你的查询进行过滤,然后逐个保存 .