是否有可能从Cassandra中检索随机行(使用Python / Pycassa)?
更新:对于随机行,我的意思是随机选定的行!
答案 0 :(得分:1)
您可以通过使用随机get_range
密钥(只是随机字符串)和start
1来发出row_count
请求来执行此操作。
从内存中,我认为finish
密钥需要与start
相同,以便查询“包围”密钥空间;这通常会返回所有行,但row_count
将限制该行。
没有尝试过,但这应该确保您获得单个结果而无需知道确切的行键。
答案 1 :(得分: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提供任何支持来获取随机的非索引行。
答案 2 :(得分:0)
这适用于我的情况:
ini = random.randint(0, 999999999)
rows = col_fam.get_range(str(ini), row_count=1, column_count=0,filter_empty=False)
你必须适应你的行键类型(在我的情况下是字符串)