gpt4 book ai didi

indexing - Spark SQL 是否使用 Cassandra 二级索引?

转载 作者:行者123 更新时间:2023-12-02 22:12:55 25 4
gpt4 key购买 nike

我们使用 Cassandra 来存储许多分析表,例如“用户点击”、“用户登录”等。我们的数据模型的设计方式使我们的应用程序始终通过分区键进行查询,例如“获取登录信息”然而,有时我们需要进行一些临时分析,例如“过去 6 个月每个用户每月的平均登录次数是多少?”为此,我们使用 Spark SQL。

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

最佳答案

will Spark SQL push the filtering down to Cassandra using the secondary index, or will it still iterate through every row?

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

Is there some config I need to set to manually tell it which columns have indexes in order to push down the indexed predicates?

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

1)使用数据框

val df = sqlContext
.read
.format("org.apache.spark.sql.cassandra")
.options(Map( "table" -> "words", "keyspace" -> "test", "pushdown" -> true ))
.load()

2) 使用纯SparkSQL

CREATE TEMPORARY TABLE words
USING org.apache.spark.sql.cassandra
OPTIONS (table "words", keyspace "test", pushdown "true")

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

关于indexing - Spark SQL 是否使用 Cassandra 二级索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37393194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com