HIve SQL Union ALL 查询乱序
我们使用简单的SQL去测试是没有问题的,但是当我们使用两个SQL的结果去Union ALL 并返回的时候,就会发现,多次查询的返回结果顺序经常变化。
建议每次Union all后再次封装一个字查询后统一返回,外部再group by/order by 等,防止查询结果无序。
我们去找到了源代码版本2.7.1,查看实现UnionOperator类实现的功能使用了ReturnObjectInspectorResolver类去转换返回值,其中ReturnObjectInspectorResolver类中的数据结构是HashMap,
由于HashMap是无序的,所以Union all 与Union返回的数据是无序的,想要保持有序,最好在外层嵌套一层。