1. 程式人生 > >Hive學習之內建聚合函式

Hive學習之內建聚合函式

聚合函式

下表為Hive內建的聚合函式。

返回型別

函式名

描述

BIGINT

count(*)

count(expr)

count(DISTINCT expr[, expr_.])

count(*) – 返回檢索到的行的總數,包括含有NULL值的行。count(expr) – 返回expr表示式不是NULL的行的數量count(DISTINCT expr[, expr]) – 返回expr是唯一的且非NULL的行的數量

DOUBLE

sum(col)

sum(DISTINCT col)

對組內某列求和(包含重複值)或者對組內某列求和(不包含重複值)

DOUBLE

avg(col),

avg(DISTINCT col)

對組內某列元素求平均值者(包含重複值或不包含重複值)

DOUBLE

min(col)

返回組內某列的最小值

DOUBLE

max(col)

返回組內某列的最大值

DOUBLE

variance(col),

var_pop(col)

返回組內某個數字列的方差

DOUBLE

var_samp(col)

返回組內某個數字列的無偏樣本方差

DOUBLE

stddev_pop(col)

返回組內某個數字列的標準差

DOUBLE

stddev_samp(col)

返回組內某個數字列的無偏樣本標準差

DOUBLE

covar_pop(col1, col2)

返回組內兩個數字列的總體協方差

DOUBLE

covar_samp(col1, col2)

返回組內兩個數字列的樣本協方差

DOUBLE

corr(col1, col2)

返回組內兩個數字列的皮爾遜相關係數

DOUBLE

percentile(BIGINT col, p)

array<double>

percentile(BIGINT col, array(p1 [, p2]...))

返回組內某個列精確的第p1,p2,……位百分數,p必須在0和1之間

DOUBLE

percentile_approx(DOUBLE col, p [, B])

返回組內數字列近似的第p位百分數(包括浮點數),引數B控制近似的精確度,B值越大,近似度越高,預設值為10000。當列中非重複值的數量小於B時,返回精確的百分數

array<double>

percentile_approx(DOUBLE col, array(p1 [, p2]...) [, B])

同上,但接受並返回百分數陣列

array<struct {'x','y'}>

histogram_numeric(col, b)

使用b個非均勻間隔的箱子計算組內數字列的柱狀圖(直方圖),輸出的陣列大小為b,double型別的(x,y)表示直方圖的中心和高度

array

collect_set(col)

返回消除了重複元素的陣列

array

collect_list(col)

返回允許重複元素的陣列

INTEGER

ntile(INTEGER x)

該函式將已經排序的分割槽分到x個桶中,併為每行分配一個桶號。這可以容易的計算三分位,四分位,十分位,百分位和其它通用的概要統計

內建 Table-Generating函式(UDTF)

正常的使用者定義函式,如concat,輸入一個單行然後輸出一個單行,但table-generating函式將一個單輸入行轉換為多個輸出行。下表為Hive內建的table-generating函式。

返回型別

函式名

描述

N rows

explode(ARRAY)

引數列為陣列型別,將陣列資料中的每個元素做為一行返回

N rows

explode(MAP)

將輸入map中的每個鍵值對轉換為兩列,一列為key,另一列為value,然後返回新行

inline(ARRAY<STRUCT[,STRUCT]>)

分解struct陣列到表中

Array Type

explode(array<TYPE> a)

對於陣列a中的每個元素,該函式產生包含該元素的行For

元組

json_tuple(jsonStr, k1, k2, ...)

引數為一組鍵k1,k2……和JSON字串,返回值的元組。該方法比 get_json_object 高效,因為可以在一次呼叫中輸入多個鍵

元組

parse_url_tuple(url, p1, p2, ...)

該方法同parse_url() 相似,但可以一次性提取URL的多個部分,有效的引數名稱為: HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, USERINFO, QUERY:<KEY>

N rows

posexplode(ARRAY)

行為與引數為陣列的explode方法相似,但包含項在原始陣列中的位置,返回(pos,value)的二元組

stack(INT n, v_1, v_2, ..., v_k)

將v_1, ..., v_k 分為n行,每行包含n/k列,n必須為常數

使用語法”SELECT udtf(col) AS colAlias...”有以下幾點限制:

  •  在SELECT中不允許再有其他表示式:不支援SELECT pageid, explode(adid_list) AS myCol...
  •  UDTF不能夠巢狀使用:不支援SELECT explode(explode(adid_list)) AS myCol...
  • 不支援GROUP BY /CLUSTER BY / DISTRIBUTE BY / SORT BY:不支援SELECT explode(adid_list) AS myCol ... GROUP BY myCol

相關推薦

Hive學習之內聚合函式

聚合函式 下表為Hive內建的聚合函式。 返回型別 函式名 描述 BIGINT count(*) count(expr) count(DISTINCT expr[, expr_.]) count(*) – 返回檢索到的行的總數,包括含有NULL值的行

百測學習之內函式2和mysql的連線使用

一、遞迴      遞迴自己呼叫自己 遞迴時最多迴圈999次就不可以再迴圈了,一定要給出迴圈機會,沒有迴圈效率高 count=0 def abc(): global count count+=1 print(count) print('a

Hive聚合函式

聚合函式 下表為Hive內建的聚合函式。 返回型別 函式名 描述 BIGINT count(*) count(expr) count(DISTINCT expr[, expr_.]) count(*) – 返回檢索到的行的總數,包括

Hive Sum MAX MIN聚合函式

資料準備cookie1,2015-04-10,1cookie1,2015-04-11,5cookie1,2015-04-12,7cookie1,2015-04-13,3cookie1,2015-04-14,2cookie1,2015-04-15,4cookie1,2015-04-16,4建立資料庫及表crea

GO基礎學習之內基礎型別

1、Boolean 在Go中,布林值的型別為 bool ,值是 true 或 false ,預設為 false 。 // 示例程式碼 var isActive bool // 全域性變數宣告 var enabled, disabled = true, false func test() {

scala學習之內控制結構->for語句

  scala初學者,高手勿噴 O(∩_∩)O~ For 表示式 一、列舉集合類 程式碼: val fileHere = (new java.io.File("c:\\")).listFiles for(file <- fileHere)  println(file)

深入學習MongoDB之聚合函式

集合中的資料有/* 1 */{    "_id" : ObjectId("5b496ee9497e95fe15e0b935"),    "name" : "李四",    "age" : NumberLong(12),    "major" : "math",    "add

Node.js學習之內模組fs

IDE為VSCode .js內建的fs模組就是檔案系統模組,負責讀寫檔案 'use strict' var fs = require('fs'); //非同步讀取檔案(文字)編碼格式指定為ut

oracle學習筆記(聚合函式以及group by 和having 的用法)

                                                                                                           今天學習了聚合函式以及group by 的用法。      

Node.js學習之內模組http

'use strict' //導包 var http = require('http'); var url = require('url') var path = require('path')

Hive使用者自定義聚合函式(UDAF)

使用者自定義聚合函式,使用者提供的多個入參通過聚合計算(求和、求最大值、求最小值)得到一個聚合計算結果的函式。 問題:UDF也可以提供輸入多個引數然後輸出一個結果的運算,比如加法運算add(3,5),add這個UDF需要實現UDF的evaluate方法,那麼UDF和UD

python初識之內函式

  python的內建函式一共有68個,這裡先學習55個 作用域相關:locals()和globals()   locals() 返回本地作用域中的所有名字   globals() 返回全域性作用域中的所有名字 迭代器生成器相關:range() 、iter()、next()   range() 可迭

大資料學習之路90-sparkSQL自定義聚合函式UDAF

什麼是UDAF?就是輸入N行得到一個結果,屬於聚合類的。 接下來我們就寫一個求幾何平均數的一個自定義聚合函式的例子 我們從開頭寫起,先來看看需要進行計算的數如何產生: package com.test.SparkSQL import java.lang import org

day17 Pyhton學習函式繼續

1. locals 本地作用域/區域性作用域  會隨著位置的改變而改變 2.globals 全域性作用域   永遠不變,永遠是全域性 3.complex:複數 實數(有理數和無理數) 某一個數的平方是-1 ,那麼這個數就是一個虛數的基礎單位 j # 複數 = 實數+虛

Python3之內函式

    內建函式 內建函式 一、內建函式定義及總數 python裡的內建函式。截止到python版本3.6.2,現在python一共為我們提供了68個內建函式。 Built-in Functions abs() dict() h

Python初識之內函式

資料結構相關  列表和元組:list()、tuple()、reversed()、slice() l=[1, 2, 3, 4, 5] l.reverse() # 列表順序反轉 l2 = reversed(l) # 得到一個反序的迭代器 print(l) print(l2)

【python基礎】常用的內函式 python基礎之內函式

python基礎之內建函式   參考: http://www.runoob.com/python/python-built-in-functions.html -zip() zip函式接受任意多個(包括0個和1個)序列作為引數,返回一個tuple列表 例項1: x = [1,

python基礎之內函式與匿名函式

python基礎之內建函式與匿名函式   內建函式68個如下圖   重點的關注的內建函式len,sorted,enumerate,all,any,zip,filter,map,reversed,slice         l

2018.9.10學習函式、切片、字串拼接等

今日練習: # 題目1:從網路上使用爬蟲程式得到下面字串: # zhangsan-18-175-70-python5;lisi-20-170-80-python5;wangwu-28-165-60-python3;zhaoliu-18-175-70-python5;xi

python之內函式(二)與匿名函式、遞迴函式初識

一、內建函式(二)1、和資料結構相關(24)列表和元祖(2)list:將一個可迭代物件轉化成列表(如果是字典,預設將key作為列表的元素)。tuple:將一個可迭代物件轉化成元組(如果是字典,預設將key作為元組的元素) 2、相關內建函式(2)reversed:將一個序列翻轉,並返回此翻轉序列的迭代