我们使用Cassandra来存储一些分析表,例如“用户点击”,“用户登录”等。我们的数据模型的设计方式是我们的应用程序始终使用分区键进行查询,例如“获取用户登录ID“等。但是,有时候,我们需要做一些特别分析,例如”过去6个月每个用户每月平均登录次数是多少?“并为此我们使用Spark SQL。Spark SQL是否使用Cassandra二级索引?
我的问题是这样的:我的理解是,Spark SQL将基本上迭代Cassandra中的每一行,并将SQL查询的条件应用于每一行,丢弃那些不匹配并返回那些匹配的最后应用任何聚合等需要)。如果我在Cassandra列上创建二级索引(例如“登录时间”),然后在Spark SQL中执行类似于“从登录名中选择*,其中登录时间>'2016-05-17'”将Spark SQL按使用二级索引过滤到Cassandra,还是会遍历每一行?是否有一些配置需要设置,以手动告诉它哪些列有索引以便压下索引谓词?
啊,纯粹的SparkSQL是我失踪的一点 - 惊人的,谢谢!据推测,这将与Spark的HiveThriftServer for SparkSQL一起工作? – Matt