在 HiveQL 中将变量设置为最大值

Posted

技术标签:

【中文标题】在 HiveQL 中将变量设置为最大值【英文标题】:Set variable to maximum value in HiveQL 【发布时间】:2012-11-14 04:25:30 【问题描述】:

我想从表 totalSpeeds 中的数据列(速度)中获取第一个四分位数的值。

为此,我尝试创建一个变量(阈值),然后选择小于或等于它的值。

SET threshold = (SELECT 0.25*MAX(speed) FROM totalSpeeds);
SELECT speed FROM totalSpeeds WHERE speed <= $hiveconf:threshold;

这失败并返回了一个解析错误。有没有更有效的方法来获得前四分位数速度的上限?或者有没有办法调整上述命令以返回第一四分位数的速度?

提前致谢,

安妮塔

【问题讨论】:

【参考方案1】:

hive 中有一个内置的 UDF 用于计算百分位数。使用

从 totalSpeeds 中选择百分位数(速度,.25);

UDF 解释:

返回组中列的精确 pth 百分位数。 p 必须介于 0 和 1 之间

同样,我们也可以使用 percentile(speed, array(p1, p2)) 提取多个百分位数

【讨论】:

以上是关于在 HiveQL 中将变量设置为最大值的主要内容,如果未能解决你的问题,请参考以下文章