首页 文章

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

提问于
浏览
1

运行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条记录加载到内存中吗?

1 回答

  • 2

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

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

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

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

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

相关问题