是否有可能从 Cassandra 中检索随机行(与 Python/Pycassa 一起使用)?
更新:随机行我的意思是随机选择的行!
您可以通过使用随机密钥(只是随机字符串)和1 的 aget_range
发出请求来做到这一点。start
row_count
从记忆中,我认为finish
键需要与 相同start
,以便查询“环绕”键空间;这通常会返回所有行,但row_count
会限制这一点。
还没有尝试过,但这应该可以确保您获得一个结果,而不必知道确切的行键。
不确定随机行是什么意思。如果你的意思是随机访问行,那么确保你可以很容易地做到这一点:
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 提供任何支持来抓取随机的非索引行。
这适用于我的情况:
ini = random.randint(0, 999999999)
rows = col_fam.get_range(str(ini), row_count=1, column_count=0,filter_empty=False)
您必须适应您的行键类型(在我的情况下为字符串)