首页 > 解决方案 > Apache phoenix 的 order by 和 offset 问题在分页中给出重复的结果

问题描述

我在 apache phoenix 中使用带有偏移量的 order by 进行分页。我在下一页上得到重复的结果。

我在 Apache phoenix 中查看了 HBase 表。我正在使用 TO_NUMBER() 将我的字符串化列转换为整数。我想按降序对这个转换后的列进行排序。

示例:我有一个 Hbase 视图,例如:

 ------------------------------
| TITLE      |   COUNT          |
  ------------------------------
| t8         | 10               |
  ------------------------------
| t9         | 2                |
| t4         | 1                |
| t6         | 1                |
| t10        | 1                |
| t7         | 1                |
| t43        | 0                |
| t14        | 0                |
| t11        | 0                |
| t42        | 0                |

我的查询:

Select TITLE,COUNT from Hbase_view order by TO_NUMBER(COUNT) desc limit 5 offset 0;

结果 :

+------------+------------------+
| TITLE      |   COUNT          |
+------------+------------------+
| t8         | 10               |
| t9         | 2                |
| t4         | 1                |
| t7         | 1                |
| t10        | 1                |

下一个查询:

选择 TITLE,COUNT from Hbase_view order by TO_NUMBER(COUNT) desc limit 5 offset 5;

结果 :

+------------+------------------+
| TITLE      |        COUNT     |
+------------+------------------+
| t7         | 1                |
| t43        | 0                |
| t14        | 0                |
| t11        | 0                |
| t42        | 0                |
+------------+------------------+

这里 t7 在两个结果上重复。

预期结果 :

1st Query:-
+------------+------------------+
| TITLE      |COUNT             |
+------------+------------------+
| t8         | 10               |
| t9         | 2                |
| t4         | 1                |
| t6         | 1                |
| t10        | 1                |

2nd Query
+------------+------------------+
| TITLE      |COUNT             |
+------------+------------------+
| t7         | 1                |
| t43        | 0                |
| t14        | 0                |
| t11        | 0                |
| t42        | 0                |
+------------+------------------+

请帮助我知道确切的问题是什么?另外,我想知道,CURSOR 可以用于相同的目的吗?

标签: hbasephoenix

解决方案


好吧,我认为因为所有这些记录的数量相同:

| t4    | 1 |
| t6    | 1 |           
| t10   | 1 |           
| t7    | 1 |

使用您的查询,您无法保证这 4 条记录的顺序,因此您的分页查询不会按预期工作。

您也可以尝试在“ORDER BY”中添加标题作为二阶列。你应该有更一致的结果。


推荐阅读