【发布时间】:2011-11-16 09:31:56
【问题描述】:
我编写了一个“普查”程序来遍历列族中的所有行,并在每一行中计算列,记录最大值和行键。我在 Hector 客户端上花费了更多时间,但也编写了一个 Pelops 客户端进行测试。
基本流程是使用 RangeSlicesQuery 遍历行,然后在每一行使用 SliceQuery 遍历并收集统计信息。在 Pelops 中的工作方式类似,只是 API 不同。缺点是必须手动进行缓冲,为行和列选择缓冲区大小......我当前的数据是 1200 万行,最大列数 ~25K,所以是的需要一段时间......在我目前的配置中,我得到> 每秒 25K 行。
寻找改进方法并发现了 Hector 的 CountQuery(我假设它使用 Thrift 客户端 get_count())。认为只迭代键(使用 RangeSlicesQuery.setReturnKeysOnly())会更快,然后在每个行键上重新使用 CountQuery,我修改了代码。
不仅速度变慢了,而且慢了 30 倍! (每秒仅处理 900 行)...
有没有更好的方法来计算列数?
【问题讨论】: