Hive之内置函数

5Hive函数

1.内置函数

1.创建表

create table t_student(id int,name string)
row format delimited
fields terminated by ','
stored as textfile;

2.上传数据

load data local inpath '/home/hdfs/data_student' into table t_student;

文件内容如下:

1,terry
2,kiven
3,larry
4,renee

3.函数测试

  • 数学函数

    *返回类型**姓名(签名)**描述*
    DOUBLEround(DOUBLE a)返回的舍入BIGINTa
    DOUBLEround(DOUBLE a, INT d)返回a四舍五入到d小数位。
    DOUBLEbround(DOUBLE a)返回a使用HALF_EVEN舍入模式的舍入后的BIGINT值(从Hive 1.3.0,2.0.0开始)。也称为高斯舍入或银行家舍入。例如:bround(2.5)= 2,bround(3.5)= 4。
    DOUBLEbround(DOUBLE a, INT d)使用HALF_EVEN舍入模式返回a舍入到d小数位(从Hive 1.3.0,2.0.0开始)。例如:bround(8.25,1)= 8.2,bround(8.35,1)= 8.4。
    BIGINTfloor(DOUBLE a)返回BIGINT等于或小于的最大值a
    BIGINTceil(DOUBLE a), ceiling(DOUBLE a)返回等于或大于的最小BIGINT值a
    DOUBLErand(), rand(INT seed)返回从0到1均匀分布的随机数(逐行变化)。指定种子将确保所生成的随机数序列具有确定性。
    DOUBLEexp(DOUBLE a), exp(DECIMAL a)返回这里是自然对数的底数。Hive 0.13.0中添加了十进制版本。ea``e
    DOUBLEln(DOUBLE a), ln(DECIMAL a)返回参数的自然对数aHive 0.13.0中添加了十进制版本。
    DOUBLElog10(DOUBLE a), log10(DECIMAL a)返回参数的以10为底的对数aHive 0.13.0中添加了十进制版本。
    DOUBLElog2(DOUBLE a), log2(DECIMAL a)返回参数的以2为底的对数aHive 0.13.0中添加了十进制版本。
    DOUBLElog(DOUBLE base, DOUBLE a)log(DECIMAL base, DECIMAL a)返回base参数的底数对数aHive 0.13.0中添加了十进制版本。
    DOUBLEpow(DOUBLE a, DOUBLE p), power(DOUBLE a, DOUBLE p)返回 ap
    DOUBLEsqrt(DOUBLE a), sqrt(DECIMAL a)返回的平方根aHive 0.13.0中添加了十进制版本。
    STRINGbin(BIGINT a)以二进制格式返回数字(请参见http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_bin)。
    STRINGhex(BIGINT a) hex(STRING a) hex(BINARY a)如果参数是INTor binaryhex则以STRING十六进制格式返回数字。否则,如果数字为a STRING,它将每个字符转换为十六进制表示形式并返回结果STRING。(见http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_hex,BINARY版本蜂巢0.12.0)。
    BINARYunhex(STRING a)十六进制的倒数。将每对字符解释为十六进制数字,并转换为数字的字节表示形式。(BINARYHive 0.12.0以后的版本,用于返回字符串。)
    DOUBLEpi()返回的值pi
    DOUBLEabs(DOUBLE a)返回绝对值。
    INT or DOUBLEpmod(INT a, INT b), pmod(DOUBLE a, DOUBLE b)返回的正值a mod b
    DOUBLEsin(DOUBLE a), sin(DECIMAL a)返回aa以弧度为单位)的正弦值。Hive 0.13.0中添加了十进制版本。
    DOUBLEasin(DOUBLE a), asin(DECIMAL a)返回a-1 <= a <= 1的反正弦值,否则返回NULL 。Hive 0.13.0中添加了十进制版本。
    DOUBLEcos(DOUBLE a), cos(DECIMAL a)返回aa以弧度为单位)的余弦值。Hive 0.13.0中添加了十进制版本。
    DOUBLEacos(DOUBLE a), acos(DECIMAL a)返回a-1 <= a <= 1 的反余弦值,否则返回NULL 。Hive 0.13.0中添加了十进制版本。
    DOUBLEtan(DOUBLE a), tan(DECIMAL a)返回aa以弧度为单位)的切线。Hive 0.13.0中添加了十进制版本。
    DOUBLEatan(DOUBLE a), atan(DECIMAL a)返回的反正切值aHive 0.13.0中添加了十进制版本。
    DOUBLEdegrees(DOUBLE a), degrees(DECIMAL a)将的值a从弧度转换为度。Hive 0.13.0中添加了十进制版本。
    DOUBLEradians(DOUBLE a), radians(DOUBLE a)将值a从度转换为弧度。Hive 0.13.0中添加了十进制版本。
    INT or DOUBLEpositive(INT a), positive(DOUBLE a)返回a
    INT or DOUBLEnegative(INT a), negative(DOUBLE a)返回-a
    DOUBLE or INTsign(DOUBLE a), sign(DECIMAL a)返回符号a“ 1.0”(如果a为正)或“ -1.0”(如果a为负),否则返回“ 0.0”。十进制版本返回INT而不是DOUBLE。Hive 0.13.0中添加了十进制版本。
    DOUBLEe()返回的值e
  • 集合函数

    *返回类型**姓名(签名)**描述*
    intsize(Map<K.V>)返回Map类型中的元素数。
    intsize(Array)返回数组类型中的元素数。
    arraymap_keys(Map<K.V>)返回包含输入映射键的无序数组。
    arraymap_values(Map<K.V>)返回包含输入映射值的无序数组。
    booleanarray_contains(Array, value)如果数组包含值,则返回TRUE。
    arraysort_array(Array)根据数组元素的自然顺序对输入数组进行升序排序并返回(从0.9.0版本开始)。
  • 类型转换函数

    返回类型姓名(签名)描述
    binarybinary(string|binary)将参数转换为二进制。
    Expected “=” to follow “type”cast(expr as )将表达式expr的结果转换为。例如,cast('1’as BIGINT)会将字符串’1’转换为其整数表示。如果转换不成功,则返回null。如果cast(expr为boolean),则Hive对于非空字符串返回true。
  • 日期函数

    *返回类型**姓名(签名)**描述*
    stringfrom_unixtime(bigint unixtime[, string format])将unix纪元(1970-01-01 00:00:00 UTC)的秒数转换为一个字符串,该字符串表示当前系统时区中该时刻的时间戳,格式为“ 1970-01-01 00:00: 00”。
    bigintunix_timestamp()以秒为单位获取当前的Unix时间戳。此函数不是确定性的,其值在查询执行范围内也不是固定的,因此会阻止对查询的适当优化-自2.0版以来已弃用此函数,而推荐使用CURRENT_TIMESTAMP常量。
    bigintunix_timestamp(string date)yyyy-MM-dd HH:mm:ss使用默认时区和默认语言环境将时间字符串格式转换为Unix时间戳(以秒为单位),如果失败,则返回0:unix_timestamp(‘2009-03-20 11:30:01’)= 1237573801
    bigintunix_timestamp(string date, string pattern)将具有给定模式的时间字符串(请参阅[ http://docs.oracle.com/javase/tutorial/i18n/format/simpleDateFormat.html])转换为Unix时间戳(以秒为单位),如果失败,则返回0:unix_timestamp(‘2009 -03-20’,‘yyyy-MM-dd’)= 1237532400。
    pre 2.1.0: string2.1.0 on: dateto_date(string timestamp)返回时间戳字符串(Hive 2.1.0之前)的日期部分:to_date(“ 1970-01-01 00:00:00”)=“ 1970-01-01”。从Hive 2.1.0开始,返回日期对象。在Hive 2.1.0(HIVE-13248)之前,返回类型为String,因为创建方法时不存在Date类型。
    intyear(string date)返回日期或时间戳字符串的年份部分:year(“ 1970-01-01 00:00:00”)= 1970,year(“ 1970-01-01”)= 1970。
    intquarter(date/timestamp/string)返回日期,时间戳或范围在1到4之间的字符串的一年的四分之一(从Hive 1.3.0开始)。示例:quarter(‘2015-04-08’)= 2。
    intmonth(string date)返回日期或时间戳字符串的月份部分:month(“ 1970-11-01 00:00:00”)= 11,month(“ 1970-11-01”)= 11。
    intday(string date) dayofmonth(date)返回日期或时间戳字符串的日期部分:day(“ 1970-11-01 00:00:00”)= 1,day(“ 1970-11-01”)= 1。
    inthour(string date)返回时间戳的小时:hour(‘2009-07-30 12:58:59’)= 12,hour(‘12:58:59’)= 12。
    intminute(string date)返回时间戳的分钟。
    intsecond(string date)返回时间戳的秒数。
    intweekofyear(string date)返回时间戳字符串的星期数:weekofyear(“ 1970-11-01 00:00:00”)= 44,weekofyear(“ 1970-11-01”)= 44。
    intextract(field FROM source)从源中检索字段,例如天或小时(从Hive 2.2.0开始)。源必须是日期,时间戳,时间间隔或可以转换为日期或时间戳的字符串。支持的字段包括:日,星期几,小时,分钟,月,季度,秒,周和年。例子:选择摘录(“ 2016-10-20”中的月份)得出10。选择提取(从“ 2016-10-20 05:06:07”开始的小时数),结果为5。选择摘录(dayofweek,来自“ 2016-10-20 05:06:07”),结果为5。选择摘录(从“ 1-3”年到月的月份中的月份)结果为3。选择摘录(从间隔“ 3 12:20:30”天到第二分钟)到20。
    intdatediff(string enddate, string startdate)返回从开始日期到结束日期的天数:datediff(‘2009-03-01’,‘2009-02-27’)= 2。
    pre 2.1.0: string2.1.0 on: datedate_add(date/timestamp/string startdate, tinyint/smallint/int days)添加开始日期的天数:date_add(‘2008-12-31’,1)=‘2009-01-01’。在Hive 2.1.0(HIVE-13248)之前,返回类型为String,因为创建方法时不存在Date类型。
    pre 2.1.0: string2.1.0 on: datedate_sub(date/timestamp/string startdate, tinyint/smallint/int days)减去开始日期的天数:date_sub(‘2008-12-31’,1)=‘2008-12-30’。在Hive 2.1.0(HIVE-13248)之前,返回类型为String,因为创建方法时不存在Date类型。
    timestampfrom_utc_timestamp({any primitive type} ts, string timezone)将UTC中的timestamp 转换为给定的时区(从Hive 0.8.0开始)。 时间戳是一种原始类型,包括时间戳/日期,tinyint / smallint / int / bigint,float / double和十进制。 小数部分被视为秒。整数值以毫秒为单位。例如,from_utc_timestamp (2592000.0,‘PST’),from_utc_timestamp (2592000000,‘PST’)和from_utc_timestamp (timestamp’1970-01-30 16:00:00’,‘PST’)都返回时间戳1970-01-30 08:00:00。
    timestampto_utc_timestamp({any primitive type} ts, string timezone)将给定时区中的时间戳转换为UTC(从Hive 0.8.0开始)。 时间戳是一种原始类型,包括时间戳/日期,tinyint / smallint / int / bigint,float / double和十进制。 小数部分被视为秒。整数值以毫秒为单位。例如,to_utc_timestamp(2592000.0,‘PST’),to_utc_timestamp(2592000000,‘PST’)和to_utc_timestamp(timestamp’1970-01-30 16:00:00’,‘PST’)都返回时间戳1970-01-31 00:00:00。
    datecurrent_date返回查询评估开始时的当前日期(从Hive 1.2.0开始)。同一查询中对current_date的所有调用均返回相同的值。
    timestampcurrent_timestamp返回查询评估开始时的当前时间戳(从Hive 1.2.0开始)。同一查询中对current_timestamp的所有调用均返回相同的值。
    stringadd_months(string start_date, int num_months, output_date_format)返回起始日期之后num_months的日期(从Hive 1.1.0开始)。start_date是字符串,日期或时间戳。num_months是一个整数。如果start_date是该月的最后一天,或者如果结果月份的天数少于start_date的天部分,则结果是结果月份的最后一天。否则,结果与start_date具有相同的日组成部分。默认输出格式为“ yyyy-MM-dd”。在Hive 4.0.0之前,日期的时间部分将被忽略。从Hive 4.0.0开始,add_months支持可选参数output_date_format,该参数接受一个String,该String表示输出的有效日期格式。这样可以在输出中保留时间格式。例如 :add_months(‘2009-08-31’,1)返回’2009-09-30’。 add_months(‘2017-12-31 14:15:16’,2,‘YYYY-MM-dd HH:mm:ss’)返回’2018-02-28 14:15:16’。
    stringlast_day(string date)返回日期所属月份的最后一天(从Hive 1.1.0开始)。date是格式为“ yyyy-MM-dd HH:mm:ss”或“ yyyy-MM-dd”的字符串。日期的时间部分将被忽略。
    stringnext_day(string start_date, string day_of_week)返回第一个日期,该日期晚于start_date,并命名为day_of_week (从Hive 1.2.0开始)。start_date是字符串/日期/时间戳。day_of_week是2个字母,3个字母或一周中某天的全名(例如Mo,tue,FRIDAY)。start_date的时间部分将被忽略。例如:next_day(‘2015-01-14’,‘TU’)= 2015-01-20。
    stringtrunc(string date, string format)返回截断为格式指定单位的日期(从Hive 1.2.0开始)。支持的格式:MONTH / MON / MM,YEAR / YYYY / YY。示例:trunc(‘2015-03-17’,‘MM’)= 2015-03-01。
    doublemonths_between(date1, date2)返回日期date1和date2之间的月份数(从Hive 1.2.0开始)。如果date1晚于date2,则结果为正。如果date1早于date2,则结果为负。如果date1和date2是月份的同一天或月份的最后几天,则结果始终是整数。否则,UDF将基于31天的月份来计算结果的分数部分,并考虑时间分量date1和date2的差异。date1和date2类型可以是日期,时间戳或字符串,格式为“ yyyy-MM-dd”或“ yyyy-MM-dd HH:mm:ss”。结果四舍五入到小数点后8位。例如:months_between(‘1997-02-28 10:30:00’,‘1996-10-30’)= 3.94959677
    stringdate_format(date/timestamp/string ts, string fmt)将日期/时间戳记/字符串转换为日期格式fmt指定的格式的字符串值(从Hive 1.2.0开始)。支持的格式是Java SimpleDateFormat格式– https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html 。第二个参数fmt应该是常量。示例:date_format(‘2015-04-08’,‘y’)=‘2015’。 date_format可用于实现其他UDF,例如:dayname(date)是date_format(date,‘EEEE’)dayofyear(date)是date_format(date,‘D’)
  • 条件函数

    *返回类型**姓名(签名)**描述*
    Tif(boolean testCondition, T valueTrue, T valueFalseOrNull)当testCondition为true时返回valueTrue,否则返回valueFalseOrNull。
    booleanisnull( a )如果a为NULL,则返回true,否则返回false。
    booleanisnotnull ( a )如果a不为NULL,则返回true,否则返回false。
    Tnvl(T value, T default_value)如果value为null,则返回默认值,否则返回值(从HIve 0.11开始)。
    TCOALESCE(T v1, T v2, …)返回第一个不为NULL的v,如果所有v均为NULL,则返回NULL。
    TCASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END当a = b时,返回c; 当a = d时,返回e; 否则返回f。
    TCASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END当a = true时,返回b; 当c = true时,返回d; 否则返回e。
    Tnullif( a, b )如果a = b,则返回NULL。否则返回a (从Hive 2.3.0开始)。简写:CASE,当a = b时为NULL,否则为a
    voidassert_true(boolean condition)如果’condition’不为true,则引发异常,否则返回null(从Hive 0.8.0开始)。例如,选择assert_true(2 <1)。
  • 字符函数

    *返回类型**姓名(签名)**描述*
    intascii(string str)返回str的第一个字符的数值。
    stringbase64(binary bin)将参数从二进制转换为基本64字符串(从Hive 0.12.0开始)。
    intcharacter_length(string str)返回str中包含的UTF-8字符数(从Hive 2.2.0开始)。函数char_length是该函数的简写。
    stringchr(bigint|double A)返回具有与A等效的二进制值的ASCII字符(从Hive 1.3.0和2.1.0开始)。如果A大于256,则结果等于chr(A%256)。示例:选择chr(88); 返回“ X”。
    stringconcat(string|binary A, string|binary B…)返回按顺序串联作为参数传入的字符串或字节所得到的字符串或字节。例如,concat(‘foo’,‘bar’)的结果为’foobar’。请注意,此函数可以接受任意数量的输入字符串。
    stringdecode(binary bin, string charset)使用提供的字符集(“ US-ASCII”,“ ISO-8859-1”,“ UTF-8”,“ UTF-16BE”,“ UTF-16LE”,“ UTF- 16’)。如果任一参数为null,则结果也将为null。(从Hive 0.12.0开始。)
    binaryencode(string src, string charset)使用提供的字符集(“ US-ASCII”,“ ISO-8859-1”,“ UTF-8”,“ UTF-16BE”,“ UTF-16LE”,“ UTF- 16’)。如果任一参数为null,则结果也将为null。(从Hive 0.12.0开始。)
    intfind_in_set(string str, string strList)返回str在strList中的第一次出现,其中strList是一个逗号分隔的字符串。如果任一参数为null,则返回null。如果第一个参数包含逗号,则返回0。例如,find_in_set(‘ab’,‘abc,b,ab,c,def’)返回3。
    stringformat_number(number x, int d)将数字X格式化为’#,###,###。##'之类的格式,四舍五入到D小数位,然后将结果作为字符串返回。如果D为0,则结果没有小数点或小数部分。(由于蜂房的0.10.0 ;臭虫以固定在浮子类型蜂房0.14.0,在加入十进制型支撑蜂巢0.14.0
    stringget_json_object(string json_string, string path)根据指定的json路径从json字符串中提取json对象,并返回提取的json对象的json字符串。如果输入的json字符串无效,它将返回null。**注意:json路径只能包含字符[0-9a-z_],即不能包含大写或特殊字符。另外,键*不能以数字开头。***这是由于对Hive列名的限制。
    booleanin_file(string str, string filename)如果字符串str在文件名中显示为整行,则返回true。
    intinstr(string str, string substr)返回substrin 中第一次出现的位置str。返回null的如果任一参数是null返回0,如果substr不能在找到str。请注意,这不是基于零的。中的第一个字符的str索引为1。
    intlength(string A)返回字符串的长度。
    intlocate(string substr, string str[, int pos])返回在位置pos之后的str中第一次出现substr的位置。
    stringlower(string A) lcase(string A)返回将B的所有字符都转换为小写形式的字符串。例如,lower(‘fOoBaR’)会导致’foobar’。
    stringlpad(string str, int len, string pad)返回str,在其左边填充pad,长度为len。如果str大于len,则返回值缩短为len个字符。如果填充字符串为空,则返回值为null。
    stringltrim(string A)返回从A的开头(左侧)起修剪空格所得的字符串。例如,ltrim(‘foobar’)的结果为’foobar’。
    stringprintf(String format, Obj… args)返回根据do printf样式格式字符串格式化的输入(从Hive 0.9.0开始)。
    stringquote(String text)返回带引号的字符串(包括任何单引号HIVE-4.0.0的转义字符)输入项输出量空值空值谁的’谁的’别’别’
    stringrepeat(string str, int n)重复str n次。
    stringreplace(string A, string OLD, string NEW)返回字符串A,其中所有不重叠的OLD都替换为NEW(从Hive 1.3.0和2.1.0开始)。示例:选择replace(“ ababab”,“ abab”,“ Z”); 返回“ Zab”。
    stringreverse(string A)返回反转的字符串。
    stringrpad(string str, int len, string pad)返回str,右用pad填充到len的长度。如果str大于len,则返回值缩短为len个字符。如果填充字符串为空,则返回值为null。
    stringrtrim(string A)返回从A的结尾(右侧)修剪空格所得到的字符串。例如,rtrim(‘foobar’)结果为’foobar’。
    stringspace(int n)返回n个空格的字符串。
    arraysplit(string str, string pat)在pat周围拆分str(pat是一个正则表达式)。
    map<string,string>str_to_map(text[, delimiter1, delimiter2])使用两个定界符将文本拆分为键/值对。Delimiter1将文本分成KV对,Delimiter2将每个KV对分开。默认的定界符是’,‘代表定界符1,’:'代表定界符2。
    stringsubstr(string|binary A, int start) substring(string|binary A, int start)返回A的字节数组的子字符串或切片,从字符串的起始位置开始到字符串A的结尾。例如,substr(‘foobar’,4)的结果为’bar’(请参见[ http://dev.mysql.com /doc/refman/5.0/zh-CN/string-functions.html#function_substr ])。
    stringsubstr(string|binary A, int start, int len) substring(string|binary A, int start, int len)从长度为len的起始位置返回A的字节数组的子字符串或切片。例如,substr(‘foobar’,4,1)的结果为’b’(请参阅[ http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substr ])。
    stringtrim(string A)返回由A两端的空格修剪产生的字符串。例如,trim(‘foobar’)结果为’foobar’
    binaryunbase64(string str)将参数从基数为64的字符串转换为BINARY。(从Hive 0.12.0开始。)
    stringupper(string A) ucase(string A)返回将A的所有字符都转换为大写形式的字符串。例如,upper(‘fOoBaR’)的结果为’FOOBAR’。
    stringinitcap(string A)返回字符串,每个单词的首字母大写,所有其他字母小写。单词由空格分隔。(从Hive 1.1.0开始。)
  • 聚合函数

    *返回类型**姓名(签名)**描述*
    BIGINTcount(*), count(expr), count(DISTINCT expr[, expr…])count(*)-返回检索到的行总数,包括包含NULL值的行。count(expr)-返回为其提供的表达式为非NULL的行数。count(DISTINCT expr [,expr])-返回为其提供的表达式唯一且非NULL的行数。可以使用hive.optimize.distinct.rewrite优化执行。
    DOUBLEsum(col), sum(DISTINCT col)返回组中元素的总和或组中列的不同值的总和。
    DOUBLEavg(col), avg(DISTINCT col)返回组中元素的平均值或组中列的不同值的平均值。
    DOUBLEmin(col)返回组中列的最小值。
    DOUBLEmax(col)返回组中列的最大值。
    DOUBLEvariance(col), var_pop(col)返回组中数字列的方差。
    DOUBLEvar_samp(col)返回组中数字列的无偏样本方差。
    DOUBLEstddev_pop(col)返回组中数字列的标准偏差。
    DOUBLEstddev_samp(col)返回组中数字列的无偏样本标准差。
    DOUBLEcovar_pop(col1, col2)返回组中一对数字列的总体协方差。
    DOUBLEcovar_samp(col1, col2)返回组中一对数字列的样本协方差。
    DOUBLEcorr(col1, col2)返回组中一对数字列的皮尔逊相关系数。
    arraycollect_set(col)返回消除了重复元素的一组对象。
    arraycollect_list(col)返回具有重复项的对象列表。(从Hive 0.13.0开始。)
    INTEGERntile(INTEGER x)将有序分区划分为x多个桶,并为分区中的每一行分配一个桶号。这样可以轻松计算三分位数,四分位数,十分位数,百分位数和其他常见的汇总统计信息。(从Hive 0.11.0开始。)
  • 表生成函数

    ​ 普通的用户定义函数(例如concat())接受单个输入行并输出单个输出行。相反,表生成函数将单个输入行转换为多个输出行。

    *行集列类型**姓名(签名)**描述*
    Texplode(ARRAY a)将数组分解为多行。返回带有单列(col)的行集,该数组代表数组中每个元素的一行。
    Tkey,Tvalueexplode(MAP<Tkey,Tvalue> m)将地图分解为多行。返回一个行集合与两列(键,值),一个行从输入图中的每个键-值对。(从Hive 0.8.0开始。)。
    int,Tposexplode(ARRAY a)使用附加的int类型位置列将数组分解为多行(原始数组中项的位置,从0开始)。返回具有两列(pos,val)的行集,该数组中的每个元素一行。
    T1,…,Tninline(ARRAY<STRUCTf1:T1,...,fn:Tn> a)将结构数组分解为多行。返回具有N列的行集(N =结构中顶级元素的数量),数组中每个结构一行一行。(从Hive0.10开始。)
    T1,…,Tn/rstack(int r,T1 V1,…,Tn/r Vn)n个值V 1,…,V n分解为r行。每行将有n / r列。r必须是常数。
    string1,…,stringnjson_tuple(string jsonStr,string k1,…,string kn)接收JSON字符串和一组n个键,并返回n个值的元组。这是get_json_objectUDF的一种更有效的版本,因为它只需一次调用就可以获取多个密钥。
    string 1,…,stringnparse_url_tuple(string urlStr,string p1,…,string pn)接受URL字符串和一组n个URL部分,并返回n个值的元组。这类似于parse_url()UDF,但可以一次从URL中提取多个部分。有效的部件名称是:主机,路径,查询,参考,协议,授权,文件,用户信息,查询:<密钥>。
#取随机数rand()
select rand() from t_student;
#求a的阶乘
factorial(INT a)
select factorial(10) from t_student;
#求最大值   max()
greatest(T v1, T v2, ...)
select greatest(10,123,53,34,1,23,502,120) from t_student;
#求最小值
least(T v1, T v2, ...)
select least(10,123,53,34,1,23,502,120) from t_student;
#数学常量e
select e() from t_student;
#数学常量pi
select pi() from t_student;

#返回当前时间
select current_date from t_student;

#如果列中有null值,则返回默认值
NULL
nvl(T value, T default_value)
select id,nvl(name, '无名氏') from t_student;

#对于值的不同判断,取不同的值
CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END
如果a=b就返回c,a=d就返回e,否则返回f  
如CASE 4 WHEN 5  THEN 5 WHEN 4 THEN 4 ELSE 3 END 将返回4
select id,name,CASE id WHEN 3 THEN '老板' ELSE '员工' END,name from t_student;

#判断某个文件中是否包含某个字符串
in_file(string str, string filename)
select in_file('2,vivo,4000.0','/home/hdfs/phone_data') from t_student;

#通过某个符号切割字符串
split(string str, string pat)
select split('hello,world,briup', ',') from t_student;

#截取字符串
substr(string|binary A, int start, int len)
select substr('ceo-larry', 0, 3) from t_student;

#在某字符串中查找某个子串第一次出现的位置,位置从1开始  indexof
instr(string str, string substr)
select instr('ceo-larry', 'la') from t_student;

#将第一个字符串中的,符合第二个字符串的部分,替换成第三个字符串
translate(string|char|varchar input, string|char|varchar from, string|char|varchar to)
select translate('hello briup', 'briup', 'imut') from t_student;

#比较两个字符串,不同的字符个数
levenshtein(string A, string B)
select levenshtein('testptest', 'briup') from t_student;

#把array中的字符用某个符号拼接起来
stream.collect(Collector.join)
concat_ws(string SEP, array<string>)
select concat_ws('#', split('hello,world,briup', ',')) from t_student;

#先按照班级Id排列,每个班级再按照成绩排序,并给出排名
create table students(id int,name string,score double,classId id)
row format delimited
fields terminated by ','
stored as textfile;

load data local inpath '/Users/angelia/hive/students.txt' into table students;

#窗口函数 row_number() over (partition by 列 order by 列 desc/asc)
select
  classId,
  name,
  score,
  row_number() over (partition by classId order by score desc) as rn
from students;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值