与 CQL 相比,Spark 有哪些额外优势?
What additional benefits does Spark give over CQL?
我们正在探索 Cassandra 的 SPARK,以克服 CQL 的局限性。
我们最初仅限于 CQL,但在 RDBMS 上几乎没有道路 blocks/hurdles。举几个例子如下
- 为了比较列上的 >(大于) 和 <(小于),我们限制列在聚类键。即使我在集群中有一个列,我仍然应该提供分区键来对集群键执行 < 或 >。
- 无法检查任何列值是否为 NULL
- 为了查询其他分区键的任何列,我们必须在该列上创建索引
- ORDER BY 不是 CLUSTERING KEY 的列
- GROUP BY 限制
- 加入表格
我是 cassandra 的新手,由于限制,我经常重新访问我的架构。
因此与 HDFS 的 HIVE/PIG 类似,Spark 比 CQL 有哪些额外优势?
CQL 不能替代 SQL。它实际上是为从几个(通常是一个)分区键中提取值而设计的,正如您所指出的,它不会进行任何类型的聚合、分组、非常有限的排序等(尽管 Cassandra 3.0 将具有 UDF 和 UDA) .
以下是 Spark 通过 CQL 提供的功能:
- 通过 DataFrames 和 SQL 进行一般聚合和查询,包括 JOIN、GROUP BY、ORDER BY 和 UDF
- 如果您使用 sqlContext.cacheTable
在内存中缓存 Cassandra 数据,查询速度将显着加快——快几个数量级
- 使用 Scala、Java、Python 和 R API
集成机器学习、统计、图形处理以及几乎任何您能想象到的分布式计算
- 能够从许多其他数据源(包括各种 HDFS 格式、Amazon S3、DBMSes、Mongo 和当今的大多数其他数据库)对 Cassandra 表进出 ETL
Spark 确实是与 CQL 完全不同的野兽。它提供对大量数据的复杂分析,而 CQL 则没有。但是,也有一些限制:
- Spark 不擅长高并发查询。为此,您希望保持查询简单并使用 CQL 提取非常少量的数据。
- 在 Spark 中缓存数据不是 HA,并且无法在将新数据写入 C* 时进行更新
如果您希望通过支持更新且无需缓存的 Cassandra 进行非常快速的分析查询,请查看我的项目 http://github.com/tuplejump/FiloDB。
我们正在探索 Cassandra 的 SPARK,以克服 CQL 的局限性。
我们最初仅限于 CQL,但在 RDBMS 上几乎没有道路 blocks/hurdles。举几个例子如下
- 为了比较列上的 >(大于) 和 <(小于),我们限制列在聚类键。即使我在集群中有一个列,我仍然应该提供分区键来对集群键执行 < 或 >。
- 无法检查任何列值是否为 NULL
- 为了查询其他分区键的任何列,我们必须在该列上创建索引
- ORDER BY 不是 CLUSTERING KEY 的列
- GROUP BY 限制
- 加入表格
我是 cassandra 的新手,由于限制,我经常重新访问我的架构。
因此与 HDFS 的 HIVE/PIG 类似,Spark 比 CQL 有哪些额外优势?
CQL 不能替代 SQL。它实际上是为从几个(通常是一个)分区键中提取值而设计的,正如您所指出的,它不会进行任何类型的聚合、分组、非常有限的排序等(尽管 Cassandra 3.0 将具有 UDF 和 UDA) .
以下是 Spark 通过 CQL 提供的功能:
- 通过 DataFrames 和 SQL 进行一般聚合和查询,包括 JOIN、GROUP BY、ORDER BY 和 UDF
- 如果您使用 sqlContext.cacheTable 在内存中缓存 Cassandra 数据,查询速度将显着加快——快几个数量级
- 使用 Scala、Java、Python 和 R API 集成机器学习、统计、图形处理以及几乎任何您能想象到的分布式计算
- 能够从许多其他数据源(包括各种 HDFS 格式、Amazon S3、DBMSes、Mongo 和当今的大多数其他数据库)对 Cassandra 表进出 ETL
Spark 确实是与 CQL 完全不同的野兽。它提供对大量数据的复杂分析,而 CQL 则没有。但是,也有一些限制:
- Spark 不擅长高并发查询。为此,您希望保持查询简单并使用 CQL 提取非常少量的数据。
- 在 Spark 中缓存数据不是 HA,并且无法在将新数据写入 C* 时进行更新
如果您希望通过支持更新且无需缓存的 Cassandra 进行非常快速的分析查询,请查看我的项目 http://github.com/tuplejump/FiloDB。