【问题标题】:How to simulate BigQuery's quantiles in Hive如何在 Hive 中模拟 BigQuery 的分位数
【发布时间】:2018-02-16 07:58:25
【问题描述】:

我想在 Hive 中模拟 BigQuery 的 QUANTILES 函数。

数据集:1,2,3,4

BigQuery 的查询结果将返回值 2

选择第 n(2, quantiles(col1, 3))

但在 Hive 中:

选择百分位数(col1, 0.5)

我有 2.5

注意:对于奇数条记录,我得到了相同的结果。

是否有足够的 Hive 的 udf 功能?

【问题讨论】:

  • QUANTILES 是一个统计近似值。将标准 SQL 与 BigQuery 一起使用时的类似物称为 APPROX_QUANTILES。如果 Hive 给你一个准确的值,你为什么要一个近似的中位数?
  • 感谢 Elliott 的快速回复。对于我的用例,我得到了更好的结果,近似中位数。据我了解,Hive 中没有 approx_quantiles 函数。

标签: hadoop apache-spark hive google-bigquery quantile


【解决方案1】:

我猜你要找的是percentile_approx UDF。

This page 为您提供 Hive 中所有内置 UDF 的列表。

percentile_approx(DOUBLE col, p [, B])

返回组中数值列(包括浮点类型)的近似第 p 个百分位数。 B 参数以内存为代价控制近似精度。较高的值会产生更好的近似值,默认值为 10,000。当 col 中不同值的数量小于 B 时,这将给出一个精确的百分位值。

【讨论】:

  • percentile_approx 的结果不同,它取决于行数和 B 参数。但 BigQuery 查询结果是一致的。
猜你喜欢
  • 2018-12-25
  • 2021-01-06
  • 1970-01-01
  • 1970-01-01
  • 2017-10-12
  • 2015-04-26
  • 1970-01-01
  • 2020-05-19
  • 1970-01-01
相关资源
最近更新 更多