来自DSE的Spark是否在运行SQL Query之前将所有数据存入RDD?

时间:2015-06-11 14:47:14

标签: cassandra apache-spark datastax

运行DSE 4.7

所以说我有一个4节点的DSE Cassandra / Spark集群......

我有一张Cassandra表,里面有4,000,000条记录。

在Spark上运行以下Spark SQL"从表中选择*,其中email =?或移动=?"

Spark会将所有数据加载到RDD中,然后根据where子句进行过滤吗?每个spark节点每个节点都有1,000,000条记录加载到内存中吗?

1 个答案:

答案 0 :(得分:2)

  

spark会将所有数据加载到RDD中,然后根据where子句进行过滤吗?

这取决于您的数据库架构。如果您的查询明确地将扫描限制为单个C *分区(并且我们的where email = ? or mobile = ?肯定没有),则Spark将仅加载部分数据。

在您的情况下,它必须扫描所有数据。

  

每个spark节点每个节点都有1,000,000条记录加载到内存中吗?

同样,它取决于您的数据集大小和工作节点上的RAM数量。 Spark RDD并不总是完全加载到RAM中,在你的情况下它可以分成更小的部分(例如100k行),加载到ram中,根据你的查询进行过滤,然后逐个保存。