3

是否有可能从 Cassandra 中检索随机行(与 Python/Pycassa 一起使用)?

更新:随机行我的意思是随机选择的行!

4

3 回答 3

1

您可以通过使用随机密钥(只是随机字符串)和1 的 aget_range发出请求来做到这一点。startrow_count

从记忆中,我认为finish键需要与 相同start,以便查询“环绕”键空间;这通常会返回所有行,但row_count会限制这一点。

还没有尝试过,但这应该可以确保您获得一个结果,而不必知道确切的行键。

于 2012-03-05T13:12:14.057 回答
0

不确定随机行是什么意思。如果你的意思是随机访问行,那么确保你可以很容易地做到这一点:

import pycassa.pool
import pycassa.columnfamily

pool = pycassa.pool.ConnectionPool('keyspace', ['localhost:9160']
cf = pycassa.columnfamily.ColumnFamily(pool, 'cfname')
row = cf.get('row_key')

这会给你任何行。如果你的意思是你想要一个随机选择的行,我认为你在不知道键是什么的情况下不能很容易地做到这一点。您可以生成一个索引行,然后从中选择一个随机列,并使用它从另一个列族中获取一行。基本上,您需要创建一个新行,其中每个列值都是您尝试从中选择行的列族中的行键。然后,您可以从该行中随机抓取一列,并且您拥有随机行的密钥。

我不认为 pycassa 提供任何支持来抓取随机的非索引行。

于 2012-03-05T12:25:15.483 回答
0

这适用于我的情况:

ini = random.randint(0, 999999999)
rows = col_fam.get_range(str(ini), row_count=1, column_count=0,filter_empty=False)

您必须适应您的行键类型(在我的情况下为字符串)

于 2012-12-03T19:00:21.533 回答