chr*_*ina 1 filter cassandra apache-spark
使用cassandra
and spark
和datastax
's spark-cassandra-connector
.
在spark-cassandra-connector中,它支持这样的过滤器示例:
sc.cassandraTable("test", "cars").select("id", "model").where("color = ?", "black").toArray.foreach(println)
Run Code Online (Sandbox Code Playgroud)
基本上它用过滤color
列black
.但是,我可以根据范围过滤行吗?就像我想过滤range
一个long
类型的列,并range
在100000
和之间200000
?是否cql
支持这样的范围过滤器?
CQL仅支持对群集列进行范围查询.范围查询可以在SQL中通过在同一个字段上使用两个边界条件来表示,例如,在您将编写的spark-cassandra-connector中:
.where("my_long >= ? and my_long < ?", 1L, 100L)
Run Code Online (Sandbox Code Playgroud)
只要"my_long"列是第一个聚类列,这将起作用.聚类列是在主键中声明分区列之后的列.
例如,如果主键声明如下,则可以在my_long列上运行范围查询:
如您所见,在上述所有情况中,my_long都遵循主键中分区键的声明.如果列属于聚类列但不是第一列,则必须为所有前面的列提供相等条件.例如:
注意:spark-cassandra-connector默认在所有查询中添加"ALLOW FILTERING"子句.如果您尝试在cqlsh中运行上面的示例,则必须手动指定该子句.
归档时间: |
|
查看次数: |
939 次 |
最近记录: |