获得无序的输出,同时采用蜂巢“ORDER BY”查询(Getting unordered outpu

2019-10-21 19:23发布

我已经使用了“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

可能是什么原因?

注:我使用蜂巢0.10。

Answer 1:

如果我没看错的,好像你保持所有的列作为字符串的数据类型。

因此,数据的排序发生,但因为它发生的字符串,即按字典。

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

希望能帮助到你...!!



文章来源: Getting unordered output while using Hive 'Order By' query
标签: hadoop hive