【发布时间】:2016-07-21 12:07:46
【问题描述】:
我有以下结构的 cassandra 表:
创建 TABLE 表 ( 关键整数, 时间时间戳, 测量浮动, 主键(键、时间) );
我需要创建一个 Spark 作业,该作业将从上一个表中读取数据,在指定的开始和结束时间戳内进行一些处理,并将结果刷新回 cassandra。
所以我的 spark-cassandra-connector 将不得不对集群 cassandra 表列进行范围查询。
如果我这样做会有任何性能差异:
sc.cassandraTable(keyspace,table).
as(caseClassObject).
filter(a => a.time.before(startTime) && a.time.after(endTime).....
所以我正在做的是将所有数据加载到 Spark 并应用过滤
或者如果我这样做:
sc.cassandraTable(keyspace, table).
where(s"time>$startTime and time<$endTime)......
过滤 Cassandra 中的所有数据,然后将较小的子集加载到 Spark。
范围查询的选择性约为 1% 查询中不可能包含分区键。
这两种解决方案中的哪一种更受欢迎?
【问题讨论】:
标签: apache-spark cassandra spark-cassandra-connector