我正在以这样的方式建模Casandra DB,data_time将是行Key。行键的格式为(yyyy_mm_dd_hh)。这已根据应用需求进行了建模。
可能有大约700K行具有相同的行Key,因此当我尝试删除行时,当我再次查询时,我得到一个rpc_timeout异常。当我搜索时,我发现这是因为SS Table可能会被破坏。我也不想运行nodetool,因为删除部分将通过批处理自动运行。
我厌倦了使用Netflix的Astyanax API,但没有运气。我正在尝试使用Java中的计划删除查询来删除记录。
有人可以帮我解决这个问题。
答案 0 :(得分:1)
您的删除(以及读取)问题在于您执行的巨大请求未通过Cassandra超时(默认为10秒)完成。
相反,请尝试通过将uuid
与rowkey
一起指定来缩小要删除的行数。
所以而不是:
cqlsh> DELETE FROM user_events WHERE rowkey='2015_02_08_14' ;
试试这个:
cqlsh> DELETE FROM user_events WHERE rowkey='2015_02_08_14' AND uuid = '5ee9d850-af44-11e4-9822-12e3f512a338';