首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spark是否使用Cassandra辅助索引?

Spark是否使用Cassandra辅助索引?
EN

Stack Overflow用户
提问于 2016-05-23 14:04:26
回答 1查看 900关注 0票数 2

我们使用Cassandra存储一些分析表,例如“用户单击”、“用户登录”等。我们的数据模型的设计方式是,我们的应用程序总是通过分区键进行查询,例如“获取用户id登录”等。然而,有时我们需要做一些特别的分析,比如“过去6个月中每个用户每月登录的平均数量是多少?”为此,我们使用Spark。

我的问题是:我的理解是,Spark将基本上遍历Cassandra中的每一行,并将SQL查询的条件应用于每一行,丢弃不匹配的行,并返回匹配的行(最后应用任何所需的聚合等等)。如果我在Cassandra列上创建一个辅助索引(例如,‘登录时间’),然后在Spark中执行类似于"select * from logintime > '2016-05-17'“之类的操作,那么Spark SQL会使用辅助索引将筛选推到Cassandra,还是会在每一行中迭代?我是否需要设置一些配置来手动告诉它哪些列有索引,以便按下索引谓词?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-23 16:19:49

Spark会使用辅助索引将过滤推到Cassandra,还是会继续遍历每一行?

是的,当SparkSQL可用时,它将使用辅助索引执行谓词下推到CQL。

我是否需要设置一些配置来手动告诉它哪些列有索引,以便按下索引谓词?

唯一需要声明的是激活谓词下推。

1)使用dataframe

代码语言:javascript
复制
val df = sqlContext
  .read
  .format("org.apache.spark.sql.cassandra")
  .options(Map( "table" -> "words", "keyspace" -> "test", "pushdown" -> true ))
  .load()

2)使用纯SparkSQL

代码语言:javascript
复制
CREATE TEMPORARY TABLE words
USING org.apache.spark.sql.cassandra
OPTIONS (table "words", keyspace "test", pushdown "true")

连接器将在引导时从Cassandra获取元数据,并自动确定哪些索引可用于下推。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37393194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档