从我对Cassandra的一点理解中,似乎数据局部性对访问节点的客户端应用程序来说基本上是透明的,因为它应该如此。如何访问Cassandra节点的本地数据
但是,如果我明确只想访问我所连接节点本地的列族的数据,该怎么办?这样的事情可能吗?我还没有找到从开箱即用的客户端API中获取这种方法的方法,但似乎可以通过系统表获得这些信息,但我无法弄清楚如何执行此操作。
想法是执行mapreduce,但不使用Hadoop。本地客户端将连接到其本地cassandra节点,对本地数据执行聚合,然后将其传回上游。
这样的事情可能吗?从外观上看,似乎有可能,因为我已经看到Hadoop能够使用Cassandra的证据,但这些示例似乎是针对Hadoop而不是通用客户端。本地客户端(与Casandra交谈)将使用Java。我目前正在使用Hector,但我不确定它是否会提供任何数据位置信息。
下面是我们要求您备份并告诉我们您的目标是什么的地方。 :)如果你想扫描所有的数据,使用locality,map/reduce或类似的,可以完成。否则,我不确定访问大部分随机数据子集有什么好处。 – jbellis 2012-02-13 23:11:30
你是对的,这正是我想到的,对于map/reduce或类似的东西,除非它不是Hadoop。每个Cassandra节点将有一个客户端,因此每个客户端只能访问该节点的本地数据至关重要。 我知道这可能不是最有意义的,但它确实在我尝试实现的背景下进行。 – wombat 2012-02-14 02:58:18