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