在使用Hive' Order By'时获得无序输出询问

时间:2015-02-09 06:55:06

标签: hadoop hive

我尝试过使用' 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。

1 个答案:

答案 0 :(得分:2)

如果我没有错,似乎您将所有列的数据类型保存为字符串

所以数据的排序正在发生,但正如字符串那样,也就是按字典顺序发生。

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

希望它有所帮助...... !!