对于一个数值型字段,我现在想看一下它的分布情况,做一个直方图就是一个既简便又直观的方法,而hive中恰好就有这么一个直方图函数,虽然不能拿来直接作图,但是其输出的结果可以用来做图
可以参考:hive官网的解释
不过对于我等技术渣,并没有用过gnuplot其输出结果也让人费解,举个例子:
select inline(histogram_numeric(cast(a.amount as int),10)) from a
其输出结果为:
x | y |
---|---|
17.44729121 | 3706735 |
200.817127 | 761326 |
415.5276635 | 142733 |
729.1485127 | 101190 |
3001 | 384 |
4036.04923 | 9301466 |
20003.46331 | 695 |
20301.24341 | 36884 |
21001.00392 | 67385 |
50005.05261 | 67405 |
很明显,输出的结果是不等距的。
根据官方解释,x就是直方图的柱子的“center”,并没有直接给出每个柱子的区间,那么区间的起终点分别是多少呢?其实很简单,就是相邻两个中心的均值
bin | y |
---|---|
x<(17.4472+200.8171)/2 | 3706735 |
(17.4472+200.8171)/2<=x<(200.8171+415.5276)/2 | 761326 |
(200.8171+415.5276)/2<=x<(415.5276+729.1485)/2 | 142733 |
(415.5276+729.1485)/2<=x<(729.1485+3001)/2 | 101190 |
(729.1485+3001)/2<=x<(3001+4036.0492)/2 | 384 |
(3001+4036.0492)/2<=x<(4036.0492+20003.4633)/2 | 9301466 |
(4036.0492+20003.4633)/2<=x<(20003.4633+20301.2434)/2 | 695 |
(20003.4633+20301.2434)/2<=x<(20301.2434+21001.0039)/2 | 36884 |
(20301.2434+21001.0039)/2<=x<(21001.0039+50005.0526)/2 | 67385 |
(21001.0039+50005.0526)/2<=x | 67405 |
以后大家就照着这么理解就行了