2016-10-21 102 views
1

是否有火花卡桑德拉连接器的方式来实现所述侧端过滤,它等效于每分区限制在CQLperPartitionLimit在天然卡桑德拉Java驱动程序?火花卡桑德拉连接器 - perPartitionLimit

请注意,这里是每个cassandra分区的限制不是每个spark分区(连接器中现有的限制功能支持)。

火花2.0.1,连接器 - 2.0.0-M3

回答

0

的Spark卡桑德拉连接器内置于限制API(如2.0.0-M3的)只能由C *令牌区间的上限。

如果您使用的Cassandra大于3.6,则可以在.where API中手动添加每个分区限制。

https://issues.apache.org/jira/browse/CASSANDRA-7017

sc.cassandraTable(...).where("PER PARTITION LIMIT 10") 
+0

感谢您的快速回答。但是,当它在api中指定时,关键字STATICLIMIT被视为列名,因此是错误。 引起:java.io.IOException:准备SELECT ... FROM ... WHERE token(“src”)>时的异常? AND token(“src”)<=? AND STATICLIMIT = 1 AND event_type = 1允许过滤:未定义的列名staticlimit。 Cassandra版本3.9 – ray

+0

对不起,没有读完该票的结束。每个分区限制 – RussS

1

感谢来自RussS最初的答案。我通过以下方式使用它:

首先,我们需要使用“PER PARTITION LIMIT”。

第二,如果你有其他的where子句,这需要与他们的一个组合,如下:

sc.cassandraTable(...),其中( “EVENT_TYPE = 1元分区限制5” )

代替

sc.cassandraTable(...)。其中( “EVENT_TYPE = 1)。凡(” PER PARTITION LIMIT 5 “)

否则一个与关键字将被之前生成” PER PARTITION LIMIT“,这会导致错误。