目录
- 1. ascii(string str)
- 2.base64(binary bin)
- 3.character_length(string str)
- 4.chr(bigint|double A)
- 5.concat(string|binary A, string|binary B...)
- 6.context_ngrams(array<array<string>>, array<string>, int K, int pf)
- 7.concat_ws(string SEP, string A, string B...)
- 8.concat_ws(string SEP, array)
- 9.decode(binary bin, string charset)
- 10.elt(N int,str1 string,str2 string,str3 string,...)
- 11.encode(string src, string charset)
- 12. field(val T,val1 T,val2 T,val3 T,...)
- 13.find_in_set(string str, string strList)
- 14.format_number(number x, int d)
- 15.get_json_object(string json_string, string path)
- 16.in_file(string str, string filename)
- 17.instr(string str, string substr)
- 18.length(string A)
- 19.locate(string substr, string str[, int pos])
- 20.lower(string A) lcase(string A)
- 21.lpad(string str, int len, string pad)
- 22.ltrim(string A)
- 23.ngrams(array<array<string>>, int N, int K, int pf)
- 24.octet_length(string str)
- 25.parse_url(string urlString, string partToExtract [, string keyToExtract])
- 26.printf(String format, Obj... args)
- 27.quote(String text)
- 28.regexp_extract(string subject, string pattern, int index)
- 29.regexp_replace(string INITIAL_STRING, string PATTERN, string REPLACEMENT)
- 30.repeat(string str, int n)
- 31.replace(string A, string OLD, string NEW)
- 32.reverse(string A)
- 33.rpad(string str, int len, string pad)
- 34.rtrim(string A)
- 35.sentences(string str, string lang, string locale)
- 36.space(int n)
- 37.split(string str, string pat)
- 38.str_to_map(text[, delimiter1, delimiter2])
- 39. substr(string|binary A, int start) substring(string|binary A, int start)
- 40.substr(string|binary A, int start, int len) substring(string|binary A, int start, int len)
- 41.substring_index(string A, string delim, int count)
- 42.translate(string|char|varchar input, string|char|varchar from, string|char|varchar to)
- 43.trim(string A)
- 44.unbase64(string str)
- 45.upper(string A) ucase(string A)
- 46.initcap(string A)
- 47.levenshtein(string A, string B)
- 48.soundex(string A)
- 参考
1. ascii(string str)
返回值:int
功能:返回str中首个ASCII字符的整数值
示例:
> select ascii('Hive') as f1;
+-----+
| f1 |
+-----+
| 72 |
+-----+
2.base64(binary bin)
返回值:string
功能:将二进制bin转换为base 64位的字符串
示例:
> select base64(unbase64('Hive')) as f1;
+-------+
| f1 |
+-------+
| Hive |
+-------+
补充:Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。参考:https://baike.baidu.com/item/base64/8545775?fr=aladdin
3.character_length(string str)
返回值:int
功能:返回str中UTF-8字符的个数(从Hive2.2.0开始),char_length是该函数的简写
示例:
> select character_length('Hive') as f1;
+-----+
| f1 |
+-----+
| 4 |
+-----+
> select char_length('Hive') as f1;
+-----+
| f1 |
+-----+
| 4 |
+-----+
4.chr(bigint|double A)
返回值:string
功能:返回二进制等价于A的ASCII字符(从Hive1.3.0和2.1.0开始),如果A大于256,返回的结果将等价于chr(A % 256)
示例:
> select chr(100) as f1;
+-----+
| f1 |
+-----+
| d |
+-----+
> select chr(356) as f1;
+-----+
| f1 |
+-----+
| d |
+-----+
5.concat(string|binary A, string|binary B…)
返回值:string
功能:对字符串或二进制字节按序拼接
示例:
> select concat('H','i','ve') as f1;
+-------+
| f1 |
+-------+
| Hive |
+-------+
6.context_ngrams(array<array<string>>, array<string>, int K, int pf)
返回值:array<struct<string,double>>
功能:与 sentences()函数一起使用,分词后,统计分词结果中与数组中指定的单词一起出现(包括顺序)频次最高的 TOP-K 结果。详请参考StatisticsAndDataMining
示例:
> select context_ngrams(sentences('hello word!hello hive,hi hive,hello hive'),array('hello',null),3) as f1;
+----------------------------------------------------+
| f1 |
+----------------------------------------------------+
| [{"ngram":["hive"],"estfrequency":2.0},{"ngram":["word"],"estfrequency":1.0}] |
+----------------------------------------------------+
该示例中统计的是与’hello’一起出现,并且在 hello 后面的频次最高的TOP-3,结果中,hello 与 hive 同时出现 2 次,hello 与 word 同时出现 1 次。
7.concat_ws(string SEP, string A, string B…)
返回值:string
功能:与concat()类似,但使用指定的分隔符
示例:
> select concat_ws('--','H','i','ve') as f1;
+-----------+
| f1 |
+-----------+
| H--i--ve |
+-----------+
8.concat_ws(string SEP, array)
返回值:string
功能:与上面的concat_ws()类似,但操作的对象是array
示例:
> select concat_ws('--',array('Hive','Hadoop')) as f1;
+---------------+
| f1 |
+---------------+
| Hive--Hadoop |
+---------------+
9.decode(binary bin, string charset)
返回值:string
功能:使用指定的字符集charset将二进制值bin解码成字符串,支持的字符集有: ‘US-ASCII’, ‘ISO-8859-1’, ‘UTF-8’, ‘UTF-16BE’, ‘UTF-16LE’, ‘UTF-16’,如果任意一个参数为NULL都将返回NULL
示例:
> select decode(encode("Hive","UTF-8"),"US-ASCII") as f1;
+-------+
| f1 |
+-------+
| Hive |
+-------+
10.elt(N int,str1 string,str2 string,str3 string,…)
返回值:string
功能:返回位置N的字符串,如果N小于1或者大于字符串的个数则返回NULL。见 https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_elt
示例:
> select elt(3,"Hive","Hadoop","Hbase") as f1;
+--------+
| f1 |
+--------+
| Hbase |
+--------+
11.encode(string src, string charset)
返回值:binary
功能:对字符串src,按照指定字符集charset进行编码,支持的字符集有: ‘US-ASCII’, ‘ISO-8859-1’, ‘UTF-8’, ‘UTF-16BE’, ‘UTF-16LE’, ‘UTF-16’,如果任意一个参数为NULL都将返回NULL
示例:
> select encode("Hive","UTF-16LE") as f1;
+-----------+
| f1 |
+-----------+
| Hive |
+-----------+
12. field(val T,val1 T,val2 T,val3 T,…)
返回值:int
功能:返回第一个参数val在其余参数列表中的位置。如果没有找到则返回0。支持所有的原始类型,参数直接的比较使用str.equals(x)函数,如果val为NULL则返回0。见 https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_field
示例:
> select field("Hadoop","Hive","Hadoop","Hbase") as f1;
+-----+
| f1 |
+-----+
| 2 |
+-----+
13.find_in_set(string str, string strList)
返回值:int
功能:返回str在strList中首次出现的位置,strList是一个逗号分隔的字符串。任意参数为null则返回null,如果str中包含有逗号则返回0.
示例:
> select find_in_set('ab', 'abc,b,ab,c,def') as f1;
+-----+
| f1 |
+-----+
| 3 |
+-----+
14.format_number(number x, int d)
返回值:string
功能:将数值X转换成"#,###,###.##"格式字符串,并保留d位小数,如果d为0,将进行四舍五入且不保留小数
示例:
> select format_number(147842,2) as f1;
+-------------+
| f1 |
+-------------+
| 147,842.00 |
+-------------+
15.get_json_object(string json_string, string path)
返回值:string
功能:解析 json 的字符串json_string,返回 path 指定的内容。如果输入的 json 字符串无效,那么返回 NULL。注意JSON path字符串只能由数字 字母 下划线组成,即不能有大写字母和特殊字符,同时key不能由数字开头,这是由于Hive对列名的限制导致。
示例:
>select get_json_object('{"store":
{"fruit":\[{"weight":8,"type":"apple"},{"weight":9,"type":"pear"}],
"bicycle":{"price":19.95,"color":"red"}},
"email":"amy@only_for_json_udf_test.net",
"owner":"amy"}','$.owner') as f1;
+------+
| f1 |
+------+
| amy |
+------+
16.in_file(string str, string filename)
返回值:boolean
功能:如果名为filename的文件中有一行数据与字符串str相等就返回true
示例: ??
17.instr(string str, string substr)
返回值:int
功能:返回substr在str中第一次出现的位置,任意参数为null则返回null,如果str中不包含substr则返回0。注意起始位置是从1开始的。
示例:
> select instr('dfabc','abc') as f1;
+-----+
| f1 |
+-----+
| 3 |
+-----+
18.length(string A)
返回值:int
功能:返回字符串A的长度
示例:
> select length("Hive") as f1;
+-----+
| f1 |
+-----+
| 4 |
+-----+
19.locate(string substr, string str[, int pos])
返回值:int
功能:返回在位置pos之后,substr在str中首次出现的位置
示例:
> select locate('abc','dfabchelloabc',4) as f1;
+-----+
| f1 |
+-----+
| 11 |
+-----+
> select locate('abc','dfabchelloabc') as f1;
+-----+
| f1 |
+-----+
| 3 |
+-----+
20.lower(string A) lcase(string A)
返回值:string
功能:将字符串A的所有大写字母转换为小写
示例:
> select lower('DFabcHelloabc') as f1;
+----------------+
| f1 |
+----------------+
| dfabchelloabc |
+----------------+
> select lcase('DFabcHelloabc') as f1;
+----------------+
| f1 |
+----------------+
| dfabchelloabc |
+----------------+
21.lpad(string str, int len, string pad)
返回值:string
功能:从左边开始使用字符串pad对str进行填充至长度为len,如果str本身的长度已经超过len,则会被缩减值len,如果pad为kong则返回NULL。
示例:
> select lpad("abc",12,'*') as f1;
+---------------+
| f1 |
+---------------+
| *********abc |
+---------------+
> select lpad("abc",1,'*') as f1;
+-----+
| f1 |
+-----+
| a |
+-----+
> select lpad("abc",1,'') as f1;
+-------+
| f1 |
+-------+
| NULL |
+-------+
22.ltrim(string A)
返回值:string
功能:去掉字符串A左侧的空格
示例:
> select ltrim(" Hive ") as f1;
+---------+
| f1 |
+---------+
| Hive |
+---------+
23.ngrams(array<array<string>>, int N, int K, int pf)
返回值:array<struct<string,double>>
功能:与 sentences()函数一起使用,统计分词后的结果中一起出现频次最高的 TOP-K 结果。详请参考StatisticsAndDataMining
示例:
> select ngrams(sentences('hello word!hellohive,hi hive,hello hive'),2,2) as f1
+----------------------------------------------------+
| f1 |
+----------------------------------------------------+
| [{"ngram":["hello","word"],"estfrequency":1.0},{"ngram":["hellohive","hi"],"estfrequency":1.0}] |
+----------------------------------------------------+
示例中,统计的是两个词在一起出现频次最高的 TOP-2,结果中,hello 与 hive 同时出现 2 次
24.octet_length(string str)
返回值:int
功能:返回以utf-8编码保存字符串str所需八位字节的个数(从Hive2.2.0开始)。octet_length(str) 的值可能会大于 character_length(str)
示例:
> select octet_length('欲速则不达') as f1;
+-----+
| f1 |
+-----+
| 15 |
+-----+
> select character_length('欲速则不达') as f1;
+-----+
| f1 |
+-----+
| 5 |
+-----+
25.parse_url(string urlString, string partToExtract [, string keyToExtract])
返回值:string
功能:对URL进行解析,从URL中返回指定的部分。partToExtract 的有效值为:HOST, PATH, QUERY,REF,PROTOCOL, AUTHORITY, FILE, USERINFO。还可以通过将key作为第三个参数来提取QUERY中特定key的值
示例:
> select parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'HOST') as f1;
+---------------+
| f1 |
+---------------+
| facebook.com |
+---------------+
> select parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'QUERY', 'k1') as f1;
+-----+
| f1 |
+-----+
| v1 |
+-----+
26.printf(String format, Obj… args)
返回值:string
功能:按照printf风格格式输出字符串
示例:
> select printf("%08X",12345) as f1;
+-----------+
| f1 |
+-----------+
| 00003039 |
+-----------+
27.quote(String text)
返回值:string
功能:返回带引号的字符串。(Hive4.0.0新增)
示例:当前不可用
28.regexp_extract(string subject, string pattern, int index)
返回值:string
功能:使用pattern对字符串suject进行抽取,返回匹配到pattern第index个部分的字符串。在使用预定义的字符类时需要注意:将’\s’用作第二个参数将与字母s匹配;’\s’用于匹配空格等。
示例:
> select regexp_extract('Hellostop', 'H(.*?)(\s)', 1) as f1;
+-------+
| f1 |
+-------+
| ello |
+-------+
29.regexp_replace(string INITIAL_STRING, string PATTERN, string REPLACEMENT)
返回值:string
功能:将INITIAL_STRING中所有匹配到正则表达式PATTERN的子串使用REPLACEMENT替换并返回。在使用预定义的字符类时需要注意:将’\s’用作第二个参数将与字母s匹配;’\s’用于匹配空格等。
示例:
> select regexp_replace("foobar", "oo|ar", "XXX") as f1;
+-----------+
| f1 |
+-----------+
| fXXXbXXX |
+-----------+
30.repeat(string str, int n)
返回值:string
功能:重复n次字符串str
示例:
> select repeat("Hive",3) as f1;
+---------------+
| f1 |
+---------------+
| HiveHiveHive |
+---------------+
31.replace(string A, string OLD, string NEW)
返回值:string
功能:将字符串A中所有不重叠出现的OLD替换为NEW并返回(从Hive1.3.0和2.1.0开始)。
示例:
> select replace("ababababab", "abab", "Z") as f1;
+-------+
| f1 |
+-------+
| ZZab |
+-------+
32.reverse(string A)
返回值:string
功能:反转字符串A
示例:
> select reverse("Hive") as f1;
+-------+
| f1 |
+-------+
| eviH |
+-------+
33.rpad(string str, int len, string pad)
返回值:string
功能:与lpad相反。从右边开始使用字符串pad对str进行填充至长度为len,如果str本身的长度已经超过len,则会被缩减值len,如果pad为kong则返回NULL。
示例:
> select rpad("abc",12,'*') as f1;
+---------------+
| f1 |
+---------------+
| abc********* |
+---------------+
34.rtrim(string A)
返回值:string
功能:去掉字符串A右侧的空格
示例:
> select rtrim(" Hive ") as f1;
+----------+
| f1 |
+----------+
| Hive |
+----------+
35.sentences(string str, string lang, string locale)
返回值:array<array>
功能:将自然语言文本标记为单词和句子,其中每个句子在适当的句子边界处断开并以单词数组返回。‘lang’ 和 'locale’是可选参数。
示例:
> select sentences('Hello there! How are you?') as f1;
+------------------------------------------+
| f1 |
+------------------------------------------+
| [["Hello","there"],["How","are","you"]] |
+------------------------------------------+
36.space(int n)
返回值:string
功能:返回n个空格的字符串
示例:
> select space(10) as f1;
+-------------+
| f1 |
+-------------+
| |
+-------------+
37.split(string str, string pat)
返回值:array
功能:按照正则表达式pat来分割字符串str,并以array类型返回。
示例:
> select split('Hadoop%Hive%Hbase','%') as f1;
+----------------------------+
| f1 |
+----------------------------+
| ["Hadoop","Hive","Hbase"] |
+----------------------------+
38.str_to_map(text[, delimiter1, delimiter2])
返回值:map<string,string>
功能:将字符串str按照指定的分隔符转换成key-value对,delimiter1是不同K-V对之间的分隔符,默认为逗号;delimiter2是K-V之间的分隔符,默认为":"
示例:
> select str_to_map("1&hadoop,2&hive,3&hbase",",","&") as f1;
+----------------------------------------+
| f1 |
+----------------------------------------+
| {"1":"hadoop","2":"hive","3":"hbase"} |
+----------------------------------------+
39. substr(string|binary A, int start) substring(string|binary A, int start)
返回值:string
功能:从start位置开始截取A的字符串并返回
示例:
> select substr("Hello,Hive",3) as f1;
+-----------+
| f1 |
+-----------+
| llo,Hive |
+-----------+
40.substr(string|binary A, int start, int len) substring(string|binary A, int start, int len)
返回值:string
功能:从start位置开始截取A的长度为length的字符串并返回
示例:
> select substr("Hello,Hive",3,5) as f1;
+--------+
| f1 |
+--------+
| llo,H |
+--------+
41.substring_index(string A, string delim, int count)
返回值:string
功能:截取第count个分隔符delim之前的字符串(从Hive 1.3.0开始),如果count为正,则返回从左开始计数第count个分隔符左侧所有的内容。如果count为负,则返回从右开始计数第count个分隔符右侧所有的内容
示例:
> select substring_index('hive.apache.org', '.', 2) as f1;
+--------------+
| f1 |
+--------------+
| hive.apache |
+--------------+
> select substring_index('hive.apache.org', '.', -2) as f1;
+-------------+
| f1 |
+-------------+
| apache.org |
+-------------+
42.translate(string|char|varchar input, string|char|varchar from, string|char|varchar to)
返回值:string
功能:将input字符串中的from替换为to并返回
示例:
> select translate("Hello","l","w") as f1;
+--------+
| f1 |
+--------+
| Hewwo |
+--------+
43.trim(string A)
返回值:string
功能:去除字符串A两侧的空格
示例:
> select trim(" Hive ") as f1;
+-------+
| f1 |
+-------+
| Hive |
+-------+
44.unbase64(string str)
返回值:binary
功能:将base 64位的字符串转换为binary
示例:
> select base64(unbase64('Hive')) as f1;
+-------+
| f1 |
+-------+
| Hive |
+-------+
45.upper(string A) ucase(string A)
返回值:string
功能:将字符串A的所有小写字母转换为大写
示例:
> select upper('DFabcHelloabc') as f1;
+----------------+
| f1 |
+----------------+
| DFABCHELLOABC |
+----------------+
> select ucase('DFabcHelloabc') as f1;
+----------------+
| f1 |
+----------------+
| DFABCHELLOABC |
+----------------+
46.initcap(string A)
返回值:string
功能:将返回字符串,每个单词的第一个字母为大写,其他字母都为小写。单词之间由空格分隔(从Hive1.1.0开始)
示例:
> select initcap("hehe haha heihei") as f1;
+-------------------+
| f1 |
+-------------------+
| Hehe Haha Heihei |
+-------------------+
47.levenshtein(string A, string B)
返回值:int
功能:计算两个字符串之间的 Levenshtein 距离(从Hive1.2.0开始)
示例:
> select levenshtein("Hive","Hadoop") as f1;
+-----+
| f1 |
+-----+
| 5 |
+-----+
补充:莱文斯坦距离,又称Levenshtein距离,是编辑距离的一种。指两个字串之间,由一个转成另一个所需的最少编辑操作次数。允许的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。参考:https://baike.baidu.com/item/%E8%8E%B1%E6%96%87%E6%96%AF%E5%9D%A6%E8%B7%9D%E7%A6%BB
48.soundex(string A)
返回值:string
功能:将字符串A转换成soundex 编码的字符串(从Hive1.2.0开始
示例:
> select soundex("Hive") as f1;
+-------+
| f1 |
+-------+
| H100 |
+-------+
补充:SOUNDEX ( character_expression ),SOUNDEX 将 alpha 字符串转换成由四个字符组成的代码,以查找相似的词或名称。代码的第一个字符是 character_expression 的第一个字符,代码的第二个字符到第四个字符是数字。将忽略 character_expression 中的元音,除非它们是字符串的第一个字母。参考:https://baike.baidu.com/item/SOUNDEX/3113783?fr=aladdin
参考
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-StringFunctions
https://www.cnblogs.com/MOBIN/p/5618747.html#6
https://www.cnblogs.com/handsome-24/p/11232904.html