【问题标题】:Calculating Percentile in Hive在 Hive 中计算百分位数
【发布时间】:2015-07-16 16:52:04
【问题描述】:

我的 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

所以perCol10 中的18.42col10 中的423 相对于整个col10 的百分位数。

以前我在内存中使用 NumPy 数组的(小得多的)数据集做同样的事情。但是作为 HiveQL 和数据库的新手,我真的不知道从哪里开始,所以任何帮助或指点都将不胜感激!

从一些初步研究来看,cume_dist 似乎很有趣,但我不明白如何在我的用例中使用它。

非常感谢。

【问题讨论】:

    标签: sql hive


    【解决方案1】:

    百分位数是 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 95th Per Tx_fragment_cnt

    上述查询将计算 95 个百分位值 .... 为 Tx_fragment_count 列,该列是字符串列

    【讨论】:

      猜你喜欢
      • 2020-05-19
      • 1970-01-01
      • 2011-12-29
      • 2013-06-20
      • 2017-10-12
      • 2017-10-19
      • 1970-01-01
      • 2016-07-28
      • 2017-08-29
      相关资源
      最近更新 更多