使用java在Cassandra中删除多行的问题

时间:2015-02-05 09:04:52

标签: java cassandra

我正在以这样的方式建模Casandra DB,data_time将是行Key。行键的格式为(yyyy_mm_dd_hh)。这已根据应用需求进行了建模。

可能有大约700K行具有相同的行Key,因此当我尝试删除行时,当我再次查询时,我得到一个rpc_timeout异常。当我搜索时,我发现这是因为SS Table可能会被破坏。我也不想运行nodetool,因为删除部分将通过批处理自动运行。

我厌倦了使用Netflix的Astyanax API,但没有运气。我正在尝试使用Java中的计划删除查询来删除记录。

有人可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

您的删除(以及读取)问题在于您执行的巨大请求未通过Cassandra超时(默认为10秒)完成。

相反,请尝试通过将uuidrowkey一起指定来缩小要删除的行数。

所以而不是:

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';