天天看點

Hive(十六)--内置函數大全 LanguageManual UDF

摘要

Hive内部提供了很多函數給開發者使用,包括數學函數,類型轉換函數,條件函數,字元函數,聚合函數,表生成函數等等,這些函數都統稱為内置函數。

目錄

  • 數學函數
  • 集合函數
  • 類型轉換函數
  • 日期函數
  • 條件函數
  • 字元函數
  • 聚合函數
  • 表生成函數

    數學函數

Return Type Name (Signature) Description
DOUBLE round(DOUBLE a) Returns the rounded 

BIGINT

 value of 

a

.

傳回對a四舍五入的BIGINT值

DOUBLE round(DOUBLE a, INT d) Returns 

a

 rounded to 

d

 decimal places.

傳回DOUBLE型d的保留n位小數的DOUBLW型的近似值

DOUBLE bround(DOUBLE a) Returns the rounded BIGINT value of 

a

 using HALF_EVEN rounding mode (as of Hive 1.3.0, 2.0.0). Also known as Gaussian rounding or bankers' rounding. Example: bround(2.5) = 2, bround(3.5) = 4.

銀行家舍入法(1~4:舍,6~9:進,5->前位數是偶:舍,5->前位數是奇:進)

DOUBLE bround(DOUBLE a, INT d) Returns 

a

 rounded to 

d

 decimal places using HALF_EVEN rounding mode (as of Hive 1.3.0, 2.0.0). Example: bround(8.25, 1) = 8.2, bround(8.35, 1) = 8.4.

銀行家舍入法,保留d位小數

BIGINT floor(DOUBLE a) Returns the maximum 

BIGINT

 value that is equal to or less than 

a

向下取整,最數軸上最接近要求的值的左邊的值  如:6.10->6   -3.4->-4
BIGINT ceil(DOUBLE a), ceiling(DOUBLE a) Returns the minimum BIGINT value that is equal to or greater than 

a

.

求其不小于小給定實數的最小整數如:ceil(6) = ceil(6.1)= ceil(6.9) = 6

DOUBLE rand(), rand(INT seed)

Returns a random number (that changes from row to row) that is distributed uniformly from 0 to 1. Specifying the seed will make sure the generated random number sequence is deterministic.

每行傳回一個DOUBLE型随機數seed是随機因子

DOUBLE exp(DOUBLE a), exp(DECIMAL a) Returns 

ea

 where 

e

 is the base of the natural logarithm. Decimal version added in Hive 0.13.0.

傳回e的a幂次方, a可為小數

DOUBLE ln(DOUBLE a), ln(DECIMAL a) Returns the natural logarithm of the argument 

a

. Decimal version added in Hive 0.13.0.

以自然數為底d的對數,a可為小數

DOUBLE log10(DOUBLE a), log10(DECIMAL a) Returns the base-10 logarithm of the argument 

a

. Decimal version added in Hive 0.13.0.

以10為底d的對數,a可為小數

DOUBLE log2(DOUBLE a), log2(DECIMAL a) Returns the base-2 logarithm of the argument 

a

. Decimal version added in Hive 0.13.0.

以2為底數d的對數,a可為小數

DOUBLE

log(DOUBLE base, DOUBLE a)

log(DECIMAL base, DECIMAL a)

Returns the base-

base

 logarithm of the argument 

a

. Decimal versions added in Hive 0.13.0.

以base為底的對數,base 與 a都是DOUBLE類型

DOUBLE pow(DOUBLE a, DOUBLE p), power(DOUBLE a, DOUBLE p) Returns 

ap

.

計算a的p次幂

DOUBLE sqrt(DOUBLE a), sqrt(DECIMAL a) Returns the square root of 

a

. Decimal version added in Hive 0.13.0.

計算a的平方根

STRING bin(BIGINT a)

Returns the number in binary format (see http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_bin).

計算二進制a的STRING類型,a為BIGINT類型

STRING hex(BIGINT a) hex(STRING a) hex(BINARY a) If the argument is an 

INT

 or 

binary

hex

 returns the number as a 

STRING

 in hexadecimal format. Otherwise if the number is a 

STRING

, it converts each character into its hexadecimal representation and returns the resulting 

STRING

. (Seehttp://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_hex, 

BINARY

 version as of Hive 0.12.0.)

計算十六進制a的STRING類型,如果a為STRING類型就轉換成字元相對應的十六進制

BINARY unhex(STRING a) Inverse of hex. Interprets each pair of characters as a hexadecimal number and converts to the byte representation of the number. (

BINARY

 version as of Hive 0.12.0, used to return a string.)

hex的逆方法

STRING conv(BIGINT num, INT from_base, INT to_base), conv(STRING num, INT from_base, INT to_base)

Converts a number from a given base to another (see http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_conv).

将GIGINT/STRING類型的num從from_base進制轉換成to_base進制

DOUBLE abs(DOUBLE a)

Returns the absolute value.

計算a的絕對值

INT or DOUBLE pmod(INT a, INT b), pmod(DOUBLE a, DOUBLE b) Returns the positive value of 

a mod b

.

a對b取模

DOUBLE sin(DOUBLE a), sin(DECIMAL a) Returns the sine of 

a

 (

a

 is in radians). Decimal version added in Hive 0.13.0.

求a的正弦值

DOUBLE asin(DOUBLE a), asin(DECIMAL a) Returns the arc sin of 

a

 if -1<=a<=1 or NULL otherwise. Decimal version added in Hive 0.13.0.

求d的反正弦值

DOUBLE cos(DOUBLE a), cos(DECIMAL a) Returns the cosine of 

a

 (

a

 is in radians). Decimal version added in Hive 0.13.0.

求餘弦值

DOUBLE acos(DOUBLE a), acos(DECIMAL a) Returns the arccosine of 

a

 if -1<=a<=1 or NULL otherwise. Decimal version added in Hive 0.13.0.

求反餘弦值

DOUBLE tan(DOUBLE a), tan(DECIMAL a) Returns the tangent of 

a

 (

a

 is in radians). Decimal version added in Hive 0.13.0.

求正切值

DOUBLE atan(DOUBLE a), atan(DECIMAL a) Returns the arctangent of 

a

. Decimal version added in Hive 0.13.0.

求反正切值

DOUBLE degrees(DOUBLE a), degrees(DECIMAL a) Converts value of 

a

 from radians to degrees. Decimal version added in Hive 0.13.0.

獎弧度值轉換角度值

DOUBLE radians(DOUBLE a), radians(DOUBLE a) Converts value of 

a

 from degrees to radians. Decimal version added in Hive 0.13.0.

将角度值轉換成弧度值

INT or DOUBLE positive(INT a), positive(DOUBLE a) Returns 

a

.

傳回a

INT or DOUBLE negative(INT a), negative(DOUBLE a) Returns 

-a

.

傳回a的相反數

DOUBLE or INT sign(DOUBLE a), sign(DECIMAL a) Returns the sign of 

a

 as '1.0' (if 

a

 is positive) or '-1.0' (if 

a

 is negative), '0.0' otherwise. The decimal version returns INT instead of DOUBLE. Decimal version added in Hive 0.13.0.

如果a是正數則傳回1.0,是負數則傳回-1.0,否則傳回0.0

DOUBLE e() Returns the value of 

e

.

數學常數e

DOUBLE pi() Returns the value of 

pi

.

數學常數pi

BIGINT factorial(INT a) Returns the factorial of 

a

 (as of Hive 1.2.0). Valid 

a

 is [0..20].

求a的階乘

DOUBLE cbrt(DOUBLE a) Returns the cube root of 

a

 double value (as of Hive 1.2.0).

求a的立方根

INT BIGINT

shiftleft(TINYINT|SMALLINT|INT a, INT b)

shiftleft(BIGINT a, INT b)

Bitwise left shift (as of Hive 1.2.0). Shifts 

a

b

 positions to the left.

Returns int for tinyint, smallint and int 

a

. Returns bigint for bigint 

a

.

按位左移

INT

BIGINT

shiftright(TINYINT|SMALLINT|INT a, INTb)

shiftright(BIGINT a, INT b)

Bitwise right shift (as of Hive 1.2.0). Shifts 

a

b

 positions to the right.

Returns int for tinyint, smallint and int 

a

. Returns bigint for bigint 

a

.

按拉右移

INT

BIGINT

shiftrightunsigned(TINYINT|SMALLINT|INTa, INT b),

shiftrightunsigned(BIGINT a, INT b)

Bitwise unsigned right shift (as of Hive 1.2.0). Shifts 

a

b

 positions to the right.

Returns int for tinyint, smallint and int 

a

. Returns bigint for bigint 

a

.

無符号按位右移(<<<)

T greatest(T v1, T v2, ...)

Returns the greatest value of the list of values (as of Hive 1.1.0). Fixed to return NULL when one or more arguments are NULL, and strict type restriction relaxed, consistent with ">" operator (as of Hive 2.0.0).

求最大值

T least(T v1, T v2, ...)

Returns the least value of the list of values (as of Hive 1.1.0). Fixed to return NULL when one or more arguments are NULL, and strict type restriction relaxed, consistent with "<" operator (as of Hive 2.0.0).

求最小值

  集合函數

Return Type Name(Signature) Description
int size(Map<K.V>)

Returns the number of elements in the map type.

求map的長度

int size(Array<T>)

Returns the number of elements in the array type.

求數組的長度

array<K> map_keys(Map<K.V>)

Returns an unordered array containing the keys of the input map.

傳回map中的所有key

array<V> map_values(Map<K.V>)

Returns an unordered array containing the values of the input map.

傳回map中的所有value

boolean array_contains(Array<T>, value)

Returns TRUE if the array contains value.

如該數組Array<T>包含value傳回true。,否則傳回false

array sort_array(Array<T>)

Sorts the input array in ascending order according to the natural ordering of the array elements and returns it (as of version 0.9.0).

按自然順序對數組進行排序并傳回

  類型轉換函數

Return Type Name(Signature) Description
binary binary(string|binary)

Casts the parameter into a binary.

将輸入的值轉換成二進制

Expected "=" to follow "type" cast(expr as <type>)

Converts the results of the expression expr to <type>. For example, cast('1' as BIGINT) will convert the string '1' to its integral representation. A null is returned if the conversion does not succeed. If cast(expr as boolean) Hive returns true for a non-empty string.

将expr轉換成type類型 如:cast("1" as BIGINT) 将字元串1轉換成了BIGINT類型,如果轉換失敗将傳回NULL

    日期函數

Return Type Name(Signature) Description
string from_unixtime(bigint unixtime[, string format])

Converts the number of seconds from unix epoch (1970-01-01 00:00:00 UTC) to a string representing the timestamp of that moment in the current system time zone in the format of "1970-01-01 00:00:00".

将時間的秒值轉換成format格式(format可為“yyyy-MM-dd hh:mm:ss”,“yyyy-MM-dd hh”,“yyyy-MM-dd hh:mm”等等)如from_unixtime(1250111000,"yyyy-MM-dd") 得到2009-03-12

bigint unix_timestamp()

Gets current Unix timestamp in seconds.

擷取本地時區下的時間戳

bigint unix_timestamp(string date) Converts time string in format 

yyyy-MM-dd HH:mm:ss

 to Unix timestamp (in seconds), using the default timezone and the default locale, return 0 if fail: unix_timestamp('2009-03-20 11:30:01') = 1237573801

将格式為yyyy-MM-dd HH:mm:ss的時間字元串轉換成時間戳  如unix_timestamp('2009-03-20 11:30:01') = 1237573801

bigint unix_timestamp(string date, string pattern)

Convert time string with given pattern (see [http://docs.oracle.com/javase/tutorial/i18n/format/simpleDateFormat.html]) to Unix time stamp (in seconds), return 0 if fail: unix_timestamp('2009-03-20', 'yyyy-MM-dd') = 1237532400.

将指定時間字元串格式字元串轉換成Unix時間戳,如果格式不對傳回0 如:unix_timestamp('2009-03-20', 'yyyy-MM-dd') = 1237532400

string to_date(string timestamp)

Returns the date part of a timestamp string: to_date("1970-01-01 00:00:00") = "1970-01-01".

傳回時間字元串的日期部分

int year(string date)

Returns the year part of a date or a timestamp string: year("1970-01-01 00:00:00") = 1970, year("1970-01-01") = 1970.

傳回時間字元串的年份部分

int quarter(date/timestamp/string)

Returns the quarter of the year for a date, timestamp, or string in the range 1 to 4 (as of Hive 1.3.0). Example: quarter('2015-04-08') = 2.

傳回目前時間屬性哪個季度 如quarter('2015-04-08') = 2

int month(string date)

Returns the month part of a date or a timestamp string: month("1970-11-01 00:00:00") = 11, month("1970-11-01") = 11.

傳回時間字元串的月份部分

int day(string date) dayofmonth(date)

Returns the day part of a date or a timestamp string: day("1970-11-01 00:00:00") = 1, day("1970-11-01") = 1.

傳回時間字元串的天

int hour(string date)

Returns the hour of the timestamp: hour('2009-07-30 12:58:59') = 12, hour('12:58:59') = 12.

傳回時間字元串的小時

int minute(string date)

Returns the minute of the timestamp.

傳回時間字元串的分鐘

int second(string date)

Returns the second of the timestamp.

傳回時間字元串的秒

int weekofyear(string date)

Returns the week number of a timestamp string: weekofyear("1970-11-01 00:00:00") = 44, weekofyear("1970-11-01") = 44.

傳回時間字元串位于一年中的第幾個周内  如weekofyear("1970-11-01 00:00:00") = 44, weekofyear("1970-11-01") = 44

int datediff(string enddate, string startdate)

Returns the number of days from startdate to enddate: datediff('2009-03-01', '2009-02-27') = 2.

計算開始時間startdate到結束時間enddate相差的天數

string date_add(string startdate, int days)

Adds a number of days to startdate: date_add('2008-12-31', 1) = '2009-01-01'.

從開始時間startdate加上days

string date_sub(string startdate, int days)

Subtracts a number of days to startdate: date_sub('2008-12-31', 1) = '2008-12-30'.

從開始時間startdate減去days

timestamp from_utc_timestamp(timestamp, string timezone)

Assumes given timestamp is UTC and converts to given timezone (as of Hive 0.8.0). For example, from_utc_timestamp('1970-01-01 08:00:00','PST') returns 1970-01-01 00:00:00.

如果給定的時間戳并非UTC,則将其轉化成指定的時區下時間戳

timestamp to_utc_timestamp(timestamp, string timezone)

Assumes given timestamp is in given timezone and converts to UTC (as of Hive 0.8.0). For example, to_utc_timestamp('1970-01-01 00:00:00','PST') returns 1970-01-01 08:00:00.

如果給定的時間戳指定的時區下時間戳,則将其轉化成UTC下的時間戳

date current_date

Returns the current date at the start of query evaluation (as of Hive 1.2.0). All calls of current_date within the same query return the same value.

傳回目前時間日期

timestamp current_timestamp

Returns the current timestamp at the start of query evaluation (as of Hive 1.2.0). All calls of current_timestamp within the same query return the same value.

傳回目前時間戳

string add_months(string start_date, int num_months)

Returns the date that is num_months after start_date (as of Hive 1.1.0). start_date is a string, date or timestamp. num_months is an integer. The time part of start_date is ignored. If start_date is the last day of the month or if the resulting month has fewer days than the day component of start_date, then the result is the last day of the resulting month. Otherwise, the result has the same day component as start_date.

傳回目前時間下再增加num_months個月的日期

string last_day(string date)

Returns the last day of the month which the date belongs to (as of Hive 1.1.0). date is a string in the format 'yyyy-MM-dd HH:mm:ss' or 'yyyy-MM-dd'. The time part of date is ignored.

傳回這個月的最後一天的日期,忽略時分秒部分(HH:mm:ss)

string next_day(string start_date, string day_of_week)

Returns the first date which is later than start_date and named as day_of_week (as of Hive1.2.0). start_date is a string/date/timestamp. day_of_week is 2 letters, 3 letters or full name of the day of the week (e.g. Mo, tue, FRIDAY). The time part of start_date is ignored. Example: next_day('2015-01-14', 'TU') = 2015-01-20.

傳回目前時間的下一個星期X所對應的日期 如:next_day('2015-01-14', 'TU') = 2015-01-20  以2015-01-14為開始時間,其下一個星期二所對應的日期為2015-01-20

string trunc(string date, string format)

Returns date truncated to the unit specified by the format (as of Hive 1.2.0). Supported formats: MONTH/MON/MM, YEAR/YYYY/YY. Example: trunc('2015-03-17', 'MM') = 2015-03-01.

傳回時間的最開始年份或月份  如trunc("2016-06-26",“MM”)=2016-06-01  trunc("2016-06-26",“YY”)=2016-01-01   注意所支援的格式為MONTH/MON/MM, YEAR/YYYY/YY

double months_between(date1, date2)

Returns number of months between dates date1 and date2 (as of Hive 1.2.0). If date1 is later than date2, then the result is positive. If date1 is earlier than date2, then the result is negative. If date1 and date2 are either the same days of the month or both last days of months, then the result is always an integer. Otherwise the UDF calculates the fractional portion of the result based on a 31-day month and considers the difference in time components date1 and date2. date1 and date2 type can be date, timestamp or string in the format 'yyyy-MM-dd' or 'yyyy-MM-dd HH:mm:ss'. The result is rounded to 8 decimal places. Example: months_between('1997-02-28 10:30:00', '1996-10-30') = 3.94959677

傳回date1與date2之間相差的月份,如date1>date2,則傳回正,如果date1<date2,則傳回負,否則傳回0.0  如:months_between('1997-02-28 10:30:00', '1996-10-30') = 3.94959677  1997-02-28 10:30:00與1996-10-30相差3.94959677個月

string date_format(date/timestamp/string ts, string fmt)

Converts a date/timestamp/string to a value of string in the format specified by the date format fmt (as of Hive 1.2.0). Supported formats are Java SimpleDateFormat formats –https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html. The second argument fmt should be constant. Example: date_format('2015-04-08', 'y') = '2015'.

date_format can be used to implement other UDFs, e.g.:

  • dayname(date) is date_format(date, 'EEEE')
  • dayofyear(date) is date_format(date, 'D')

    按指定格式傳回時間date 如:date_format("2016-06-22","MM-dd")=06-22

    條件函數

Return Type Name(Signature) Description
T if(boolean testCondition, T valueTrue, T valueFalseOrNull)

Returns valueTrue when testCondition is true, returns valueFalseOrNull otherwise.

如果testCondition 為true就傳回valueTrue,否則傳回valueFalseOrNull ,(valueTrue,valueFalseOrNull為泛型) 

T nvl(T value, T default_value)

Returns default value if value is null else returns value (as of HIve 0.11).

如果value值為NULL就傳回default_value,否則傳回value

T COALESCE(T v1, T v2, ...)

Returns the first v that is not NULL, or NULL if all v's are NULL.

傳回第一非null的值,如果全部都為NULL就傳回NULL  如:COALESCE (NULL,44,55)=44/strong>

T CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END

When a = b, returns c; when a = d, returns e; else returns f.

如果a=b就傳回c,a=d就傳回e,否則傳回f  如CASE 4 WHEN 5  THEN 5 WHEN 4 THEN 4 ELSE 3 END 将傳回4

T CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END

When a = true, returns b; when c = true, returns d; else returns e.

如果a=ture就傳回b,c= ture就傳回d,否則傳回e  如:CASE WHEN  5>0  THEN 5 WHEN 4>0 THEN 4 ELSE 0 END 将傳回5;CASE WHEN  5<0  THEN 5 WHEN 4<0 THEN 4 ELSE 0 END 将傳回0

boolean isnull( a )

Returns true if a is NULL and false otherwise.

如果a為null就傳回true,否則傳回false

boolean isnotnull ( a )

Returns true if a is not NULL and false otherwise.

如果a為非null就傳回true,否則傳回false

    字元函數

Return Type Name(Signature) Description
int ascii(string str)

Returns the numeric value of the first  character of str.

傳回str中首個ASCII字元串的整數值

string base64(binary bin)

Converts the argument from binary to a base 64 string (as of Hive 0.12.0)..

将二進制bin轉換成64位的字元串

string concat(string|binary A, string|binary B...)

Returns the string or bytes resulting from concatenating the strings or bytes passed in as parameters in order. For example, concat('foo', 'bar') results in 'foobar'. Note that this function can take any number of input strings..

對二進制位元組碼或字元串按次序進行拼接

array<struct<string,double>> context_ngrams(array<array<string>>, array<string>, int K, int pf)

Returns the top-k contextual N-grams from a set of tokenized sentences, given a string of "context". See StatisticsAndDataMining for more information..

與ngram類似,但context_ngram()允許你預算指定上下文(數組)來去查找子序列,具體看StatisticsAndDataMining(這裡的解釋更易懂)

string concat_ws(string SEP, string A, string B...)

Like concat() above, but with custom separator SEP..

與concat()類似,但使用指定的分隔符喜進行分隔

string concat_ws(string SEP, array<string>)

Like concat_ws() above, but taking an array of strings. (as of Hive 0.9.0).

拼接Array中的元素并用指定分隔符進行分隔

string decode(binary bin, string charset)

Decodes the first argument into a String using the provided character set (one of 'US-ASCII', 'ISO-8859-1', 'UTF-8', 'UTF-16BE', 'UTF-16LE', 'UTF-16'). If either argument is null, the result will also be null. (As of Hive 0.12.0.).

使用指定的字元集charset将二進制值bin解碼成字元串,支援的字元集有:'US-ASCII', 'ISO-8859-1', 'UTF-8', 'UTF-16BE', 'UTF-16LE', 'UTF-16',如果任意輸入參數為NULL都将傳回NULL

binary encode(string src, string charset)

Encodes the first argument into a BINARY using the provided character set (one of 'US-ASCII', 'ISO-8859-1', 'UTF-8', 'UTF-16BE', 'UTF-16LE', 'UTF-16'). If either argument is null, the result will also be null. (As of Hive 0.12.0.).

使用指定的字元集charset将字元串編碼成二進制值,支援的字元集有:'US-ASCII', 'ISO-8859-1', 'UTF-8', 'UTF-16BE', 'UTF-16LE', 'UTF-16',如果任一輸入參數為NULL都将傳回NULL

int find_in_set(string str, string strList)

Returns the first occurance of str in strList where strList is a comma-delimited string. Returns null if either argument is null. Returns 0 if the first argument contains any commas. For example, find_in_set('ab', 'abc,b,ab,c,def') returns 3..

傳回以逗号分隔的字元串中str出現的位置,如果參數str為逗号或查找失敗将傳回0,如果任一參數為NULL将傳回NULL回

string format_number(number x, int d)

Formats the number X to a format like '#,###,###.##', rounded to D decimal places, and returns the result as a string. If D is 0, the result has no decimal point or fractional part. (As of Hive 0.10.0; bug with float types fixed in Hive 0.14.0, decimal type support added in Hive 0.14.0).

将數值X轉換成"#,###,###.##"格式字元串,并保留d位小數,如果d為0,将進行四舍五入且不保留小數

string get_json_object(string json_string, string path)

Extracts json object from a json string based on json path specified, and returns json string of the extracted json object. It will return null if the input json string is invalid. NOTE: The json path can only have the characters [0-9a-z_], i.e., no upper-case or special characters. Also, the keys *cannot start with numbers.* This is due to restrictions on Hive column names..

從指定路徑上的JSON字元串抽取出JSON對象,并傳回這個對象的JSON格式,如果輸入的JSON是非法的将傳回NULL,注意此路徑上JSON字元串隻能由數字 字母 下劃線組成且不能有大寫字母和特殊字元,且key不能由數字開頭,這是由于Hive對列名的限制

boolean in_file(string str, string filename)

Returns true if the string str appears as an entire line in filename..

如果檔案名為filename的檔案中有一行資料與字元串str比對成功就傳回true

int instr(string str, string substr) Returns the position of the first occurrence of 

substr

 in 

str

. Returns 

null

 if either of the arguments are 

null

 and returns   if 

substr

 could not be found in 

str

. Be aware that this is not zero based. The first character in 

str

 has index 1..

查找字元串str中子字元串substr出現的位置,如果查找失敗将傳回0,如果任一參數為Null将傳回null,注意位置為從1開始的

int length(string A)

Returns the length of the string..

傳回字元串的長度

int locate(string substr, string str[, int pos])

Returns the position of the first occurrence of substr in str after position pos..

查找字元串str中的pos位置後字元串substr第一次出現的位置

string lower(string A) lcase(string A)

Returns the string resulting from converting all characters of B to lower case. For example, lower('fOoBaR') results in 'foobar'..

将字元串A的所有字母轉換成小寫字母

string lpad(string str, int len, string pad)

Returns str, left-padded with pad to a length of len..

從左邊開始對字元串str使用字元串pad填充,最終len長度為止,如果字元串str本身長度比len大的話,将去掉多餘的部分

string ltrim(string A)

Returns the string resulting from trimming spaces from the beginning(left hand side) of A. For example, ltrim(' foobar ') results in 'foobar '..

去掉字元串A前面的空格

array<struct<string,double>> ngrams(array<array<string>>, int N, int K, int pf)

Returns the top-k N-grams from a set of tokenized sentences, such as those returned by the sentences() UDAF. See StatisticsAndDataMining for more information..

傳回出現次數TOP K的的子序列,n表示子序列的長度,具體看StatisticsAndDataMining (這裡的解釋更易懂)

string parse_url(string urlString, string partToExtract [, string keyToExtract])

Returns the specified part from the URL. Valid values for partToExtract include HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, and USERINFO. For example, parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'HOST') returns 'facebook.com'. Also a value of a particular key in QUERY can be extracted by providing the key as the third argument, for example, parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'QUERY', 'k1') returns 'v1'..

傳回從URL中抽取指定部分的内容,參數url是URL字元串,而參數partToExtract是要抽取的部分,這個參數包含(HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, and USERINFO,例如:parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'HOST') ='facebook.com',如果參數partToExtract值為QUERY則必須指定第三個參數key  如:parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'QUERY', 'k1') =‘v1’

string printf(String format, Obj... args)

Returns the input formatted according do printf-style format strings (as of Hive0.9.0)..

按照printf風格格式輸出字元串

string regexp_extract(string subject, string pattern, int index)

Returns the string extracted using the pattern. For example, regexp_extract('foothebar', 'foo(.*?)(bar)', 2) returns 'bar.' Note that some care is necessary in using predefined character classes: using '\s' as the second argument will match the letter s; '\\s' is necessary to match whitespace, etc. The 'index' parameter is the Java regex Matcher group() method index. See docs/api/java/util/regex/Matcher.html for more information on the 'index' or Java regex group() method..

抽取字元串subject中符合正規表達式pattern的第index個部分的子字元串,注意些預定義字元的使用,如第二個參數如果使用'\s'将被比對到s,'\\s'才是比對空格

string regexp_replace(string INITIAL_STRING, string PATTERN, string REPLACEMENT)

Returns the string resulting from replacing all substrings in INITIAL_STRING that match the java regular expression syntax defined in PATTERN with instances of REPLACEMENT. For example, regexp_replace("foobar", "oo|ar", "") returns 'fb.' Note that some care is necessary in using predefined character classes: using '\s' as the second argument will match the letter s; '\\s' is necessary to match whitespace, etc..

按照Java正規表達式PATTERN将字元串INTIAL_STRING中符合條件的部分成REPLACEMENT所指定的字元串,如裡REPLACEMENT這空的話,抽符合正則的部分将被去掉  如:regexp_replace("foobar", "oo|ar", "") = 'fb.' 注意些預定義字元的使用,如第二個參數如果使用'\s'将被比對到s,'\\s'才是比對空格

string repeat(string str, int n)

Repeats str n times..

重複輸出n次字元串str

string reverse(string A)

Returns the reversed string..

反轉字元串

string rpad(string str, int len, string pad)

Returns str, right-padded with pad to a length of len..

從右邊開始對字元串str使用字元串pad填充,最終len長度為止,如果字元串str本身長度比len大的話,将去掉多餘的部分

string rtrim(string A)

Returns the string resulting from trimming spaces from the end(right hand side) of A. For example, rtrim(' foobar ') results in ' foobar'..

去掉字元串後面出現的空格

array<array<string>> sentences(string str, string lang, string locale)

Tokenizes a string of natural language text into words and sentences, where each sentence is broken at the appropriate sentence boundary and returned as an array of words. The 'lang' and 'locale' are optional arguments. For example, sentences('Hello there! How are you?') returns ( ("Hello", "there"), ("How", "are", "you") )..

字元串str将被轉換成單詞數組,如:sentences('Hello there! How are you?') =( ("Hello", "there"), ("How", "are", "you") )

string space(int n)

Returns a string of n spaces..

傳回n個空格

array split(string str, string pat)

Splits str around pat (pat is a regular expression)..

按照正規表達式pat來分割字元串str,并将分割後的數組字元串的形式傳回

map<string,string> str_to_map(text[, delimiter1, delimiter2])

Splits text into key-value pairs using two delimiters. Delimiter1 separates text into K-V pairs, and Delimiter2 splits each K-V pair. Default delimiters are ',' for delimiter1 and '=' for delimiter2..

将字元串str按照指定分隔符轉換成Map,第一個參數是需要轉換字元串,第二個參數是鍵值對之間的分隔符,預設為逗号;第三個參數是鍵值之間的分隔符,預設為"="

string substr(string|binary A, int start) substring(string|binary A, int start)

Returns the substring or slice of the byte array of A starting from start position till the end of string A. For example, substr('foobar', 4) results in 'bar' (see [http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substr])..

對于字元串A,從start位置開始截取字元串并傳回

string substr(string|binary A, int start, int len) substring(string|binary A, int start, int len)

Returns the substring or slice of the byte array of A starting from start position with length len. For example, substr('foobar', 4, 1) results in 'b' (see [http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substr])..

對于二進制/字元串A,從start位置開始截取長度為length的字元串并傳回

string substring_index(string A, string delim, int count)

Returns the substring from string A before count occurrences of the delimiter delim (as of Hive 1.3.0). If count is positive, everything to the left of the final delimiter (counting from the left) is returned. If count is negative, everything to the right of the final delimiter (counting from the right) is returned. Substring_index performs a case-sensitive match when searching for delim. Example: substring_index('www.apache.org', '.', 2) = 'www.apache'..

截取第count分隔符之前的字元串,如count為正則從左邊開始截取,如果為負則從右邊開始截取

string translate(string|char|varchar input, string|char|varchar from, string|char|varchar to) Translates the input string by replacing the characters present in the 

from

 string with the corresponding characters in the 

to

 string. This is similar to the 

translate

function in PostgreSQL. If any of the parameters to this UDF are NULL, the result is NULL as well. (Available as of Hive 0.10.0, for string types)

Char/varchar support added as of Hive 0.14.0..

将input出現在from中的字元串替換成to中的字元串 如:translate("MOBIN","BIN","M")="MOM"

string trim(string A)

Returns the string resulting from trimming spaces from both ends of A. For example, trim(' foobar ') results in 'foobar'.

将字元串A前後出現的空格去掉

binary unbase64(string str)

Converts the argument from a base 64 string to BINARY. (As of Hive 0.12.0.).

将64位的字元串轉換二進制值

string upper(string A) ucase(string A)

Returns the string resulting from converting all characters of A to upper case. For example, upper('fOoBaR') results in 'FOOBAR'..

将字元串A中的字母轉換成大寫字母

string initcap(string A)

Returns string, with the first letter of each word in uppercase, all other letters in lowercase. Words are delimited by whitespace. (As of Hive 1.1.0.).

将字元串A轉換第一個字母大寫其餘字母的字元串

int levenshtein(string A, string B)

Returns the Levenshtein distance between two strings (as of Hive 1.2.0). For example, levenshtein('kitten', 'sitting') results in 3..

計算兩個字元串之間的差異大小  如:levenshtein('kitten', 'sitting') = 3

string soundex(string A)

Returns soundex code of the string (as of Hive 1.2.0). For example, soundex('Miller') results in M460..

将普通字元串轉換成soundex字元串

    聚合函數

Return Type Name(Signature) Description
BIGINT count(*), count(expr), count(DISTINCT expr[, expr...])

count(*) - Returns the total number of retrieved rows, including rows containing NULL values.

統計總行數,包括含有NULL值的行

count(expr) - Returns the number of rows for which the supplied expression is non-NULL.

統計提供非NULL的expr表達式值的行數

count(DISTINCT expr[, expr]) - Returns the number of rows for which the supplied expression(s) are unique and non-NULL. Execution of this can be optimized with hive.optimize.distinct.rewrite.

統計提供非NULL且去重後的expr表達式值的行數

DOUBLE sum(col), sum(DISTINCT col)

Returns the sum of the elements in the group or the sum of the distinct values of the column in the group.

sum(col),表示求指定列的和,sum(DISTINCT col)表示求去重後的列的和

DOUBLE avg(col), avg(DISTINCT col)

Returns the average of the elements in the group or the average of the distinct values of the column in the group.

avg(col),表示求指定列的平均值,avg(DISTINCT col)表示求去重後的列的平均值

DOUBLE min(col)

Returns the minimum of the column in the group.

求指定列的最小值

DOUBLE max(col)

Returns the maximum value of the column in the group.

求指定列的最大值

DOUBLE variance(col), var_pop(col)

Returns the variance of a numeric column in the group.

求指定列數值的方差

DOUBLE var_samp(col)

Returns the unbiased sample variance of a numeric column in the group.

求指定列數值的樣本方差

DOUBLE stddev_pop(col)

Returns the standard deviation of a numeric column in the group.

求指定列數值的标準偏差

DOUBLE stddev_samp(col)

Returns the unbiased sample standard deviation of a numeric column in the group.

求指定列數值的樣本标準偏差

DOUBLE covar_pop(col1, col2)

Returns the population covariance of a pair of numeric columns in the group.

求指定列數值的協方差

DOUBLE covar_samp(col1, col2)

Returns the sample covariance of a pair of a numeric columns in the group.

求指定列數值的樣本協方差

DOUBLE corr(col1, col2)

Returns the Pearson coefficient of correlation of a pair of a numeric columns in the group.

傳回兩列數值的相關系數

DOUBLE  percentile(BIGINT col, p)

Returns the exact pth percentile of a column in the group (does not work with floating point types). p must be between 0 and 1. NOTE: A true percentile can only be computed for integer values. Use PERCENTILE_APPROX if your input is non-integral.

傳回col的p%分位數

    表生成函數

Return Type Name(Signature) Description
Array Type explode(array<TYPE> a)

For each element in a, generates a row containing that element.

對于a中的每個元素,将生成一行且包含該元素

N rows explode(ARRAY)

Returns one row for each element from the array..

每行對應數組中的一個元素

N rows explode(MAP)

Returns one row for each key-value pair from the input map with two columns in each row: one for the key and another for the value. (As of Hive 0.8.0.).

每行對應每個map鍵-值,其中一個字段是map的鍵,另一個字段是map的值

N rows posexplode(ARRAY) Behaves like 

explode

 for arrays, but includes the position of items in the original array by returning a tuple of 

(pos, value)

. (As of Hive 0.13.0.).

與explode類似,不同的是還傳回各元素在數組中的位置

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

Breaks up v_1, ..., v_k into n rows. Each row will have k/n columns. n must be constant..

把M列轉換成N行,每行有M/N個字段,其中n必須是個常數

tuple json_tuple(jsonStr, k1, k2, ...) Takes a set of names (keys) and a JSON string, and returns a tuple of values. This is a more efficient version of the 

get_json_object

 UDF because it can get multiple keys with just one call..

從一個JSON字元串中擷取多個鍵并作為一個元組傳回,與get_json_object不同的是此函數能一次擷取多個鍵值

tuple parse_url_tuple(url, p1, p2, ...) This is similar to the 

parse_url()

 UDF but can extract multiple parts at once out of a URL. Valid part names are: HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, USERINFO, QUERY:<KEY>..

傳回從URL中抽取指定N部分的内容,參數url是URL字元串,而參數p1,p2,....是要抽取的部分,這個參數包含HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, USERINFO, QUERY:<KEY>

inline(ARRAY<STRUCT[,STRUCT]>)

Explodes an array of structs into a table. (As of Hive 0.10.).

将結構體數組提取出來并插入到表中

參考資料

LanguageManual UDF

《Hive權威指南》

繼續閱讀