使用 Hive 'Order By' 查询时获取无序输出

Getting unordered output while using Hive 'Order By' query

我试过使用 'Order by' 如下:

select fieldA,fieldB,fieldC,fieldD from testfilter where fieldA ='000009000002'order by fieldA,fieldB,fieldC,fieldD;

但是,这会导致像这样的无序输出:

000009000002    7212    023     653
000009000002    9999    058     159
000009000002    9999    058     159
000009000002    9999    058     159
000009000002    9999    058     159
000009000002    9999    058     159
000009000002    9999    058     24
000009000002    9999    058     25
000009000002    9999    058     299
000009000002    9999    058     399
000009000002    9999    058     99
000009000002    9999    058     99
000009000002    9999    058     99
000009000002    9999    058     99

可能是什么原因?

注意:我使用的是 Hive 0.10。

如果我没记错的话,您似乎将所有列的数据类型都保留为 String.

所以数据的排序正在发生,但对于字符串也是如此,即字典顺序。

000009000002    7212    023     653

//一组

000009000002    9999    058     159
000009000002    9999    058     159
000009000002    9999    058     159
000009000002    9999    058     159
000009000002    9999    058     159
000009000002    9999    058     24
000009000002    9999    058     25
000009000002    9999    058     299
000009000002    9999    058     399
000009000002    9999    058     99
000009000002    9999    058     99
000009000002    9999    058     99
000009000002    9999    058     99

//第二组

此处前三列是相同的值,但最后一列是按字典顺序组织的。

因为1小于2,所以159在前,24在后,以此类推..

所以可以修改数据类型为int

希望对您有所帮助...!!