【发布时间】:2019-07-17 16:55:52
【问题描述】:
假设我们有以下 Cassandra 表:
create table news(
date text,
source text,
category int,
id text,
title text,
tags text,
primary key ((date, source, category), id)
)
现在我们需要支持按日期、类别和来源查找:
select * from news where date in ('2019-01-23', '2019-01-24') and
category in (1, 4, 6) and source in ('Bloomberg', 'CNN');
有人告诉我,与 与我们将所有 IN 组拆分为单独的查询并使用 UNION 连接结果相同(上述情况下为 12 个子查询)。原因是 UNION 将被分成 12 个独立的查询,每个查询都可以由集群中的一个节点(20+ 个节点)处理,我们将开始更快地获得结果。如果我们只是想确保返回的行数低于某个阈值,它也应该更快:
select count(*) (
select * from news where date in ('2019-01-23', '2019-01-24') and
category in (1, 4, 6) and source in ('Bloomberg', 'CNN') LIMIT 10001
);
但是,我没有观察到小型结果集和大型结果集(250K 行)的性能改进。我尝试使用谷歌搜索,但找不到任何可以支持或证明错误的 UNION 假设的东西。
我正在使用 Spark SQL (Hive 2) 和 Java CQL 驱动程序来访问 Cassandra 中的数据。
如果有任何有用的信息,我将不胜感激。
谢谢
【问题讨论】:
标签: apache-spark-sql datastax cassandra-3.0 datastax-java-driver