我知道在cassandra中迭代一个大的结果集有两种方法:使用令牌显式查询,如本文“使用令牌函数显示无序分区器中的行”所述。在Cassandra2.0之前,这似乎是做事情的唯一方法。使用“分页状态”。分页状态似乎是目前建议的处理方式,但它已经过时了 token 方法仍然有效。除了它是做事情的神圣方式,这当然是一种优势,我很想了解使用“新”方法比“旧”方法有什么特别的优势?有什么原因我不应该用吗 token 就这样?
token
qzlgjiam1#
我同意亚历克斯的这个回答,我要补充一点,当你这样做的时候,旧的学校(有代币),你有你的代币手,这意味着如果你处理大量的数据,你可以保存你的检查点,例如,你可以处理好失败后重新启动,或只是暂停你的工作,例如,或者也可以启动多线程作业和单独的teach worker数据,例如spark workers处理数据的方式也是基于令牌的。驱动程序自动为您处理分页,这样您就不必使用为您处理的本地事物的所有优点来获取页面,但是使用token可以让您完全掌握分页的方式,并从中获得所有优点(攻击特定范围、特定服务器)我希望这有帮助!
9udxz4iz2#
分页或令牌的使用实际上取决于您的需求和技术能力。从我的观点来看,分页的使用有利于从大分区获取数据,或者当表中没有太多数据时,可以使用分页 select * from table .但如果集群中有多个服务器,并且数据量很大,则使用 token 将允许您从特定服务器读取数据(如果您正确设置路由密钥),并并行(spark cassandra连接器使用) token 正是出于这个原因),这比使用分页有很大的优势,因为您使用的是一个协调器节点,需要转到其他节点以获取它没有的数据。但对于某些人来说,实现起来并不容易,因为您需要覆盖边缘情况,比如,当令牌范围不完全从最小值开始时。如果你需要的话,我有一个java的例子。
select * from table
2条答案
按热度按时间qzlgjiam1#
我同意亚历克斯的这个回答,我要补充一点,当你这样做的时候,旧的学校(有代币),你有你的代币手,这意味着如果你处理大量的数据,你可以保存你的检查点,例如,你可以处理好失败后重新启动,或只是暂停你的工作,例如,或者也可以启动多线程作业和单独的teach worker数据,例如spark workers处理数据的方式也是基于令牌的。
驱动程序自动为您处理分页,这样您就不必使用为您处理的本地事物的所有优点来获取页面,但是使用token可以让您完全掌握分页的方式,并从中获得所有优点(攻击特定范围、特定服务器)
我希望这有帮助!
9udxz4iz2#
分页或令牌的使用实际上取决于您的需求和技术能力。从我的观点来看,分页的使用有利于从大分区获取数据,或者当表中没有太多数据时,可以使用分页
select * from table
.但如果集群中有多个服务器,并且数据量很大,则使用
token
将允许您从特定服务器读取数据(如果您正确设置路由密钥),并并行(spark cassandra连接器使用)token
正是出于这个原因),这比使用分页有很大的优势,因为您使用的是一个协调器节点,需要转到其他节点以获取它没有的数据。但对于某些人来说,实现起来并不容易,因为您需要覆盖边缘情况,比如,当令牌范围不完全从最小值开始时。如果你需要的话,我有一个java的例子。