计算蜂巢中的百分位数

时间:2014-08-28 13:02:23

标签: sql hive

我的HDFS中有大约4个演出的JSON,我使用JSON Serde创建了一个Hive表。最终数据预计约为25GB。

该表有10列,全部为int。我需要计算每个细胞的百分位数等级。并在每列的单独列中插入。 所以我的最终结果将是:

col1 col2 col3 .... col10 perCol1 perCol2 ... perCol10
100  200  123       423   82.44   58.22       18.42

因此18.42perCol10 423 col10相对于整个col10 cume_dist的百分位数。

以前,我在内存中使用NumPy数组执行相同的(更小)数据集。但是对于HiveQL和数据库一般都是新手,我真的不知道从哪里开始,所以任何帮助或指针都会受到赞赏!

从一些初步研究来看,{{1}}似乎很有意义,但我无法理解如何在我的用例中使用它。

非常感谢。

1 个答案:

答案 0 :(得分:0)

百分位数是Hive中的直接函数...但百分位数是针对连续分布计算的...对于离散分布...我有一个简单的查询....     sort_array(collect_list(cast(Tx_fragment_count AS DECIMAL(10,2))))[cast(floor(size(collect_list(Tx_fragment_count))* 95/100)as int)] AS {\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil\fcharset0 Microsoft Sans Serif;}} \viewkind4\uc1\pard\lang1031\f0\fs17\par \v SectionHeader-PowerMatrixConfiguration:\b\v0 Power Matrix Configuration:\b0\line On OPTOLYZER(01), MESSTECHNIK(02), CCE(03)\line Var On BLUERAYDRIVE(04), HU(05), FU(06), TUNERBOX(07), SOUND(08), SOUND2(09), PASS(10), KOMBI(11), DISPLAYS(12)\line \'a6 \'a6 \line \'a6 +- electrical wakeup line\line +----- Voltage source\line\line\line\par }

以上查询将计算95%的值....对于列Tx_fragment_count,即字符串列